Como posso colocar texto no canto superior esquerdo (ou superior direito) de uma figura matplotlib, por exemplo, onde uma legenda superior esquerda estaria, ou no topo do gráfico, mas no canto superior esquerdo? Por exemplo, se for um plt.scatter (), então algo que estaria dentro do quadrado da dispersão, coloque no canto superior esquerdo.
Eu gostaria de fazer isso sem saber idealmente a escala do gráfico de dispersão sendo plotado, por exemplo, uma vez que ele mudará de conjunto de dados para conjunto de dados. Eu só quero que o texto esteja aproximadamente no canto superior esquerdo ou aproximadamente no canto superior direito. Com o posicionamento do tipo de legenda, ele não deve se sobrepor a nenhum ponto do gráfico de dispersão.
obrigado!
text
eax.transAxes
) não esteja entre elas.Respostas:
Você pode usar
text
.text
as coordenadas podem ser fornecidas em relação ao eixo, de modo que a posição do seu texto será independente do tamanho do gráfico:Para evitar que o texto interfira em algum ponto de sua dispersão é mais difícil afaik. O método mais fácil é definir o eixo y (ymax em
ylim((ymin,ymax))
) com um valor um pouco mais alto do que a coordenada y máxima de seus pontos. Desta forma, você sempre terá esse espaço livre para o texto.EDITAR: aqui você tem um exemplo:
Os parâmetros ha e va definem o alinhamento do seu texto em relação ao ponto de inserção. ie. ha = 'left' é um bom conjunto para evitar que um texto longo saia do eixo esquerdo quando o quadro é reduzido (tornado mais estreito) manualmente.
fonte
from pylab import figure, text, scatter, show
código na resposta foi executado em um console ipython no modo pylab onde as importações explícitas não eram necessárias. Em um ambiente limpo, você precisa importar o texto acima e fazershow()
para visualizar o enredoUma solução seria usar a
plt.legend
função, mesmo se você não quiser uma legenda real. Você pode especificar o posicionamento da caixa de legenda usando oloc
keyterm. Mais informações podem ser encontradas neste site, mas também incluí um exemplo que mostra como colocar uma legenda:Observe que
loc=2
, porque , a legenda está no canto superior esquerdo do gráfico. E se o texto se sobrepõe ao gráfico, você pode diminuí-lo usandolegend.fontsize
, o que tornará a legenda menor.fonte
matplotlib
é um pouco diferente de quando a resposta original foi postadamatplotlib.pyplot.text
matplotlib.axes.Axes.text
Saída de ambos
fonte