AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 78680484
Accepted
Matt Majic
Matt Majic
Asked: 2024-06-28 10:52:39 +0800 CST2024-06-28 10:52:39 +0800 CST 2024-06-28 10:52:39 +0800 CST

Muitas linhas de grade no gráfico de log

  • 772

Quando adiciono linhas de grade a um gráfico de log, parece que todas as linhas de grade possíveis são adicionadas automaticamente e eu gostaria de incluir apenas as linhas principais. Tentei desligar os tiques menores, mas não surtiu efeito.

Por exemplo:

loglog([0.000001,0.1],[0.000001,0.1])
grid on
gca.YAxis.MinorTick = 'off'

insira a descrição da imagem aqui

Como posso ter apenas linhas de grade nas marcações dos eixos rotulados?

matlab
  • 3 3 respostas
  • 50 Views

3 respostas

  • Voted
  1. Best Answer
    Wolfie
    2024-06-28T15:34:10+08:002024-06-28T15:34:10+08:00

    O logloggráfico tem eixos incomuns, porque as marcas secundárias são habilitadas por padrão, como você normalmente esperaria das marcas principais. Portanto, esse comportamento da griddocumentação é uma área cinzenta:

    grid onexibe as principais linhas de grade dos eixos atuais retornados pelo comando gca. As principais linhas de grade estendem-se a partir de cada marca de escala.

    Observe que a maioria dos gráficos na documentação paraloglog uso grid onmostram as grades secundárias (ish) como você está vendo, então duvido que esse seja um comportamento inesperado da perspectiva do MathWorks.

    Como não há como chamar gridenquanto desativa explicitamente as linhas de grade secundárias (como deveria ser o comportamento padrão), você terá que gerenciar as grades de forma mais granular setapós a criação dos eixos. Você pode ativar as grades principais e desabilitar as grades secundárias em um comando sem usar grid()nenhum...

    Testado na atualização 5 do R2020b:

    loglog([0.000001,0.1],[0.000001,0.1])
    set(gca,'xminorgrid','off','yminorgrid','off','xgrid','on','ygrid','on')
    

    plotar sem linhas de grade menores


    Editar : Pela conversa nos comentários, Luis sugeriu que grid on, grid minordeveria funcionar. No entanto, testar no R2020b isso não acontece. Chamar esses comandos em duas chamadas separadas funciona da mesma maneira que usar setacima:

    loglog([0.000001,0.1],[0.000001,0.1])
    grid on
    grid minor
    

    Presumo que seja porque o buffer gráfico deve ser liberado antes dos grid minortrabalhos para remover as linhas de grade, talvez porque, caso contrário, não há nada para remover. Você poderia disfarçar isso como uma única linha usando drawnowpara liberar o buffer, mas nesse ponto acho que recomendo apenas usar o setmostrado acima

    loglog([0.000001,0.1],[0.000001,0.1])
    grid on; drawnow(); grid minor
    

    Especulando, talvez o autor tenha loglogdecidido que as grades menores com espaçamento variável fizeram o enredo parecer mais "logístico"? ou seja, é mais obviamente uma escala não linear.

    • 5
  2. X Zhang
    2024-06-28T14:15:14+08:002024-06-28T14:15:14+08:00

    As grades seguem os ticks, então

    loglog([0.000001,0.1],[0.000001,0.1])
    grid on
    set(gca(),'XTick',logspace(-6,-1,6),'YTick',logspace(-6,-1,6),'XMinorGrid','off','YMinorGrid','off')
    

    te dar

    insira a descrição da imagem aqui

    • 4
  3. Luis Mendo
    2024-06-28T20:26:46+08:002024-06-28T20:26:46+08:00

    As outras respostas fornecem soluções, mas não explicam por que seu código não funciona. Para maior clareza, deve-se notar primeiro que

    • a gcafunção fornece o objeto dos eixos atuais ;
    • a propriedade YAxisdeste último refere-se a um objeto de régua numérica , que é filho dos eixos.

    Existem dois problemas com seu código. O primeiro problema é que

    gca.YAxis.MinorTick = 'off'

    não define uma propriedade da régua numérica dentro dos eixos atuais. Você não pode aplicar indexação de ponto diretamente a uma saída de função ; você precisa fazer um dos seguintes:

    • atribua-o primeiro a uma variável:

      a = gca;
      a.YAxis.MinorTick = 'off';
      
    • use parênteses (obrigado, @CrisLuengo !)

      gca().YAxis.MinorTick = 'off';
      
    • usar gete set(mais complicado):

      set(get(gca, 'YAxis'), 'MinorTick', 'off')
      

    O que seu código faz é criar uma estrutura chamada gca(sombrando assim a função com o mesmo nome) com o campo, subcampo e valor especificados. Nao é útil.

    O segundo problema é que a MinorTickpropriedade da régua numérica afeta apenas as marcas secundárias, não as linhas de grade secundárias. O que você deseja definir é a YMinorGridpropriedade dos eixos atuais. Então,

    a = gca;
    a.YMinorGrid = 'off';
    

    faz o que você quer.

    • 1

relate perguntas

  • matlab accumarray com números complexos

  • Como fazer com que a legenda do Matlab mostre símbolos opacos do gráfico quando os símbolos do gráfico de dispersão são semitransparentes na figura

  • Usando convolucional 1D com o mesmo formato para funcionar com FFT?

  • Teste de unidade com variáveis ​​em todo o arquivo, sem classes

  • Resultados indefinidos (NaN) ao usar ode45 no MATLAB 2022

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve