Estou tentando plotar uma figura sem marcas de seleção ou números em qualquer um dos eixos (eu uso eixos no sentido tradicional, não na nomenclatura matplotlib!). Um problema que me deparei é que o matplotlib ajusta os tickl x x subtraindo um valor N e depois adiciona N no final do eixo.
Isso pode ser vago, mas o exemplo simplificado a seguir destaca o problema, com '6.18' sendo o valor ofensivo de N:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
As três coisas que eu gostaria de saber são:
Como desativar esse comportamento em primeiro lugar (embora na maioria dos casos seja útil, nem sempre é!) Examinei
matplotlib.axis.XAxis
e não consigo encontrar nada apropriadoComo posso fazer N desaparecer (ie
X.set_visible(False)
)Existe uma maneira melhor de fazer o que precede de qualquer maneira? Meu gráfico final seria subtramas 4x4 em uma figura, se isso for relevante.
fonte
Respostas:
Em vez de ocultar cada elemento, você pode ocultar todo o eixo:
Ou, você pode definir os ticks para uma lista vazia:
Nesta segunda opção, você ainda pode usar
plt.xlabel()
eplt.ylabel()
adicionar etiquetas aos eixos.fonte
'Axes3DSubplot' object has no attribute 'get_zaxis'
get_xaxis().set_visible(False)
. Eu acho que o matplotlib, nesse caso, inicializa alguns parâmetros como se o gráfico fosse 2D.ax.set_zticks([])
vai fazer o que quiserSe você deseja ocultar apenas o texto do eixo, mantendo as linhas da grade:
Fazer
set_visible(False)
ouset_ticks([])
também ocultará as linhas de grade.fonte
Se você é como eu e nem sempre recupera os eixos
ax
, ao traçar a figura, uma solução simples seria:fonte
Um pouco de um thread antigo, mas parece ser um método mais rápido usando a versão mais recente do matplotlib:
defina o formatador principal para o eixo x
fonte
Na verdade, não consegui renderizar uma imagem sem bordas ou dados de eixo com base em nenhum dos trechos de código aqui (mesmo aquele aceito na resposta). Depois de pesquisar em alguma documentação da API, cheguei nesse código para renderizar minha imagem
Eu usei a
tick_params
chamada para desligar basicamente qualquer informação extra que possa ser renderizada e eu tenho um gráfico perfeito no meu arquivo de saída.fonte
Eu codifiquei esta figura em cores para facilitar o processo.
Você pode ter controle total sobre a figura usando estes comandos, para concluir a resposta, adicionei também o controle sobre os splines:
fonte
ax.set_xticklabels([])
eax.set_xticks([])
não funcionou para mim, masax.axes.get_xaxis().set_visible(False)
funcionou.Ao usar a API orientada a objetos, o
Axes
objeto possui dois métodos úteis para remover o texto do eixoset_xticklabels()
eset_xticks()
.Digamos que você crie um gráfico usando
Se você simplesmente deseja remover os rótulos de escala, você pode usar
ou para remover completamente os carrapatos, você pode usar
Esses métodos são úteis para especificar exatamente onde você deseja os ticks e como deseja que eles sejam rotulados. Passar uma lista vazia resulta em carrapatos ou rótulos, respectivamente.
fonte
Um truque pode ser definir a cor dos rótulos dos carrapatos como brancos para ocultá-los!
fonte