2017-02-24 2 views
6

Ich zeichne zwei Zeitreihen und Computer variiert Indizes für sie.Wie lege ich Text außerhalb von Python Plots?

Wie schreibe ich diese Indizes für diese Plots außerhalb des Plots mit annotation oder text in Python?

Unten ist mein 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 teststr außerhalb der Stellplätze drucken möchten.

Here is the plot

files

Antwort

0

Sieht aus wie der Text gibt es, aber es liegt außerhalb der Figur Grenze. Verwenden subplots_adjust(), um Platz für den 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

+0

Ich konnte den Text nicht sehen, auch nachdem 'subplots_adjust()' verwendet wurde. Muss ich 'xlim' und' ylim' definieren? – dSb

+0

Nein, ich habe diese verwendet, um den gleichen Achsenbereich ohne Ihre Daten zu erhalten. Siehst du den Text, wenn du mein Beispiel ausführst? Vielleicht verschiedene Versionen von Matplotlib? Ich benutze Version 1.5.2 (auf Python 3, aber das sollte irrelevant sein). Sie können auch mit anderen Werten wie "links", "rechts", "oben" und "unten" spielen - vielleicht ist der Text woanders. – kazemakase

+0

Ich habe versucht, oben, links, unten und rechts, aber konnte den Text nicht finden. Ich verwende Python 2.7.11 und Matplotlib Version 1.5.1. Ja, ich kann den Text in Ihrem Beispiel sehen. Ich habe meine Datei in Bearbeitung hochgeladen, können Sie sie mit meinem Code überprüfen. – dSb

12

Es ist wahrscheinlich am besten die Position in Figur zu definieren Koordinaten anstelle von Datenkoordinaten als würden Sie vermutlich den Text nicht wollen, um seine Position zu ändern, wenn Ändern der Daten.

Mit Figur Koordinaten können entweder durchgeführt werden durch die Figur-Transformation spezifiziert (fig.transFigure)

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

oder unter Verwendung des Verfahrens text der Figur anstelle derjenigen der Achsen.

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

In beiden Fällen sind die Koordinaten, den Text zu platzieren sind in Abbildung Koordinaten, wo (0,0) links unten und (1,1) ist oben rechts in der Figur.

Am Ende möchten Sie noch etwas zusätzlichen Platz für den Text zur Verfügung stellen, der neben den Achsen passt, unter Verwendung plt.subplots_adjust(left=0.3) oder so.

Verwandte Themen