Para remover o quadro da figura, escrevo
frameon=False
funciona perfeitamente com pyplot.figure
, mas matplotlib.Figure
só remove o fundo cinza, o quadro permanece. Além disso, só quero que as linhas sejam exibidas e todo o resto da figura seja transparente.
com o pyplot, posso fazer o que quiser, quero fazê-lo com o matplotlib por algum longo motivo que eu prefiro não mencionar para estender minha pergunta.
python
matplotlib
Emmet B
fonte
fonte
savefig
? (Se sim, substitui o que você definiu ao salvar a figura.) A configuração manualfig.patch.set_visible(False)
funciona?Respostas:
Primeiro, se você estiver usando
savefig
, saiba que ela substituirá a cor de fundo da figura ao salvar, a menos que você especifique o contrário (por exemplofig.savefig('blah.png', transparent=True)
).No entanto, para remover o plano de fundo dos eixos e da figura na tela, você precisará definir os dois
ax.patch
efig.patch
ficar invisível.Por exemplo
(Claro, você não pode dizer a diferença no fundo branco da SO, mas tudo é transparente ...)
Se você não quiser mostrar nada além da linha, desligue o eixo também usando
ax.axis('off')
:Nesse caso, porém, convém fazer com que os eixos ocupem a figura inteira. Se você especificar manualmente a localização dos eixos, poderá solicitar que ele assuma a figura completa (como alternativa, você pode usar
subplots_adjust
, mas isso é mais simples no caso de um único eixo).fonte
ax.axis('off')
(você também precisará desativar o quadro de figuras).ax.set_yticklabels(('G1', 'G2', 'G3'))
print_png()
lança umaTypeError: write() argument must be str, not bytes
exceção para mim em python 3. Abrir o arquivo como gravação binário ('wb'
) é necessária para que ele funcione.ax.axis('off')
, como Joe Kington apontou, removerá tudo, exceto a linha plotada.Para aqueles que desejam remover apenas o quadro (borda) e manter etiquetas, tickers etc., pode-se fazer isso acessando o
spines
objeto no eixo. Dado um objeto de eixoax
, o seguinte deve remover bordas nos quatro lados:E, no caso de remover
x
ey
marcar da trama:fonte
ax.yaxis.set_ticks_position('left') ax.xaxis.set_ticks_position('bottom')
A maneira mais fácil de se livrar do quadro feio nas versões mais recentes do matplotlib:
Se você realmente deve sempre usar a abordagem orientada a objetos, em seguida, fazer:
ax.set_frame_on(False)
.fonte
ax.set_frame_on(False)
que faz a mesma coisa. Talvez inclua na resposta acima.Com base na excelente resposta do @ peeol , você também pode remover o quadro fazendo
Para dar um exemplo (todo o exemplo de código pode ser encontrado no final desta postagem), digamos que você tenha um gráfico de barras como este,
você pode remover o quadro com os comandos acima e, em seguida, manter os rótulos
x-
eytick
(plot não mostrado) ou removê-losNesse caso, pode-se rotular as barras diretamente; o gráfico final pode ter esta aparência (o código pode ser encontrado abaixo):
Aqui está o código inteiro necessário para gerar os gráficos:
fonte
Como respondi aqui , você pode remover espinhos de todas as suas plotagens por meio das configurações de estilo (folha de estilo ou rcParams):
fonte
Problema
Eu tive um problema semelhante usando eixos. O parâmetro da classe é
frameon
mas o kwarg éframe_on
. axes_api>>> plt.gca().set(frameon=False)
AttributeError: Unknown property frameon
Solução
frame_on
Exemplo
fonte
Eu costumo fazer isso:
fonte
Para remover o quadro do gráfico
Espero que isso funcione
fonte
fonte
deve fazer o truque.
fonte
O plt.savefig possui essas opções em si, só precisa desativar os eixos antes de
fonte