Oculte os valores dos eixos, mas mantenha os rótulos das marcações dos eixos em matplotlib


101

Eu tenho esta imagem:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

insira a descrição da imagem aqui

Eu quero esconder os números; se eu usar:

plt.axis('off')

... eu entendo esta imagem:

insira a descrição da imagem aqui

Também oculta os rótulos Ve t. Como posso manter os rótulos enquanto oculto os valores?

Respostas:


137

Se você usar a abordagem orientada a objetos matplotlib , esta é uma tarefa simples usando ax.set_xticklabels()e ax.set_yticklabels():

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()

11
Funciona muito bem para remover rótulos de carrapatos, mas você ainda obtém as marcas de carrapato ...
— Andrew Schreiber

85

Sem um subplots, você pode remover universalmente os carrapatos como este:

plt.xticks([])
plt.yticks([])

44

Isso funciona muito bem. Basta colar antes plt.show():

plt.gca().axes.get_yaxis().set_visible(False)

Estrondo.


2
Obrigado, isso funciona muito bem. Nos outros casos, os tiques são preservados (porque a direção dos tiques está
— desativada

Ao contrário de respostas como ax.set_xticklabels ([]), esta funciona perfeitamente para o seguinte caso: usa-se subtramas com a opção sharex e deseja-se deletar tiques apenas para uma das subparcelas.
— Михаил Лисаков

Ótimo! E plt.gca (). Axes.get_xaxis (). Set_visible (False) para também se livrar dos rótulos e marcações do eixo x.
— fbparis

1
ou se você já tem o objeto de machado,ax.xaxis.set_visible(False)
— spinup

1
@filip Fico feliz que tenha ajudado :)
— MRT

3

Não tenho certeza se essa é a melhor maneira, mas você certamente pode substituir os rótulos de carrapato assim:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

No Python 3.4, isso gera um gráfico de linha simples, sem rótulos de escala no eixo x. Um exemplo simples está aqui: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Esta questão relacionada também tem algumas sugestões melhores: Ocultar o texto do eixo em gráficos matplotlib

Eu sou novo em python. Sua milhagem pode variar nas versões anteriores. Talvez outros possam ajudar?


2

para remover completamente as marcas, use:

ax.set_yticks([])
ax.set_xticks([])

caso contrário ax.set_yticklabels([])e ax.set_xticklabels([])manterá marcas de seleção.


Quando tento ax.set_yticks([], []), recebo o seguinte aviso: "MatplotlibDeprecationWarning: Passar o parâmetro secundário de set_xticks () posicionalmente está obsoleto desde o Matplotlib 3.2; o parâmetro se tornará palavra-chave apenas duas versões secundárias depois." Qual é a alternativa certa?
— Rylan Schaeffer

@RylanSchaeffer, em seu exemplo ax.set_yticks([], [])você está passando 2 listas vazias que causam erro. Por que fazer isso? Veja o manual de comando. Se o primeiro argumento não deve ser passado posicionalmente, passá-lo com palavra-chave: ax.set_yticks(ticks=[]).
— Ruslan S.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.