Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

673
Visualizações
How to put text outside python plots?

I am plotting two time series and computing varies indices for them.

How to write these indices for these plots outside the plot using annotation or text in python?

Below is my code

import matplotlib.pyplot as plt

obs_graph=plt.plot(obs_df['cms'], '-r', label='Observed')
plt.legend(loc='best')
plt.hold(True)
sim_graph=plt.plot(sim_df['cms'], '-g', label="Simulated")
plt.legend(loc='best')
plt.ylabel('Daily Discharge (m^3/s)')
plt.xlabel('Year')
plt.title('Observed vs Simulated Daily Discharge')
textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(NSE, RMSE)
# print textstr
plt.text(2000, 2000, textstr, fontsize=14)
plt.grid(True)
plt.show()

I want to print teststr outside the plots. Here is the current plot:

plot

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

It's probably best to define the position in figure coordinates instead of data coordinates as you'd probably not want the text to change its position when changing the data.

Using figure coordinates can be done either by specifying the figure transform (fig.transFigure)

plt.text(0.02, 0.5, textstr, fontsize=14, transform=plt.gcf().transFigure)

or by using the text method of the figure instead of that of the axes.

plt.gcf().text(0.02, 0.5, textstr, fontsize=14)

In both cases the coordinates to place the text are in figure coordinates, where (0,0) is the bottom left and (1,1) is the top right of the figure.

At the end you still may want to provide some extra space for the text to fit next to the axes, using plt.subplots_adjust(left=0.3) or so.

over 4 years ago · Santiago Trujillo Relatório

0

Looks like the text is there but it lies outside of the figure boundary. Use subplots_adjust() to make room for the text:

import matplotlib.pyplot as plt

textstr = 'NSE=%.2f\nRMSE=%.2f\n'%(1, 2)
plt.xlim(2002, 2008)
plt.ylim(0, 4500)
# print textstr
plt.text(2000, 2000, textstr, fontsize=14)
plt.grid(True)
plt.subplots_adjust(left=0.25)
plt.show()

enter image description here

over 4 years ago · Santiago Trujillo Relatório

0

According to Matplotlib version 3.3.4 documentation, you can use the figtext method:

matplotlib.pyplot.figtext(x, y, s, fontdict=None, **kwargs)

or in your case

plt.figtext(0.02, 0.5, textstr, fontsize=14)

It seems to give the same result as one of the answer by @ImportanceOfBeingErnest, i.e. :

plt.gcf().text(0.02, 0.5, textstr, fontsize=14) 

I have used both commands with Matplobib version 3.3.1.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda