Beim Plotten von Zeitreihendaten usw. mit Python werden Pandas und Matplotlib verwendet, aber das Datenanalysemodul Pandas verfügt über eine Plotfunktion, die einige Matplotlib-Funktionen enthält, und diese pandas.plot und pure ( pure) Ich habe darüber nachgedacht, wie man matplotlib.plot richtig benutzt.
Da pandas.plot die Funktion matplotlib verwendet, um seine Funktion (als Wrapper) zu implementieren, ist klar, dass das resultierende Plotdiagramm (sowohl pandas.plot als auch pure matplotlib) ungefähr gleich ist. Der Punkt der richtigen Verwendung ist, ob es (subjektiv) einfach zu bedienen ist oder nicht.
pandas beherrscht die DaraFrame-Struktur hervorragend, und mit fast einer Befehlszeile können Diagramme von Faltlinien erstellt werden.
Die folgenden Daten (Pandas DataFrame-Klasse) wurden als Beispiel vorbereitet.
In [11]: df_mkt[:10]
Out[12]:
policy actual sp500
2000-01-01 5.5 NaN NaN
2000-01-02 5.5 NaN NaN
2000-01-03 5.5 NaN 1441.46997
2000-01-04 5.5 NaN 1441.46997
2000-01-05 5.5 NaN 1441.46997
2000-01-06 5.5 NaN 1441.46997
2000-01-07 5.5 NaN 1441.46997
2000-01-08 5.5 NaN 1441.46997
2000-01-09 5.5 NaN 1441.46997
2000-01-10 5.5 NaN 1465.15002
Daten zu US-Leitzinsen und Effektivzinsen von 2000 bis 2014 sowie zum S & P 500-Index. Dies ist wie folgt aufgetragen.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(Weggelassen)
df_mkt.plot(grid=True, figsize=(10,4), secondary_y=['sp500'])
Ich habe die Option "sekundäres_y" verwendet, um die Verwendung der rechten Achse anzugeben, aber es ist sehr ** einfach **.
Die Dekoration der Figur wie Titel und Achsenbeschriftung ist noch nicht abgeschlossen, aber fast abgeschlossen. Wenn Sie dies mit matplotlib zeichnen möchten, benötigen Sie den folgenden Code.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(Weggelassen)
fig, ax1 = plt.subplots(figsize=(10,4))
plt.plot(df_mkt.index, df_mkt['policy'], 'b', label='policy')
plt.plot(df_mkt.index, df_mkt['actual'], 'g', label='actual')
plt.grid(True)
plt.legend(loc=4)
ax2 = ax1.twinx()
plt.plot(df_mkt.index, df_mkt['sp500'], 'r', label='s&p500')
plt.legend(loc=0)
(In dieser Zeichnung muss angegeben werden, dass die vertikale Achse in die rechte und die linke Achse unterteilt ist.) Das Ergebnis des Zeichnens mit dem obigen Code ist vorerst beigefügt. (Das Finish ist ** fast ** das gleiche, aber das Legend-Label ist nicht organisiert. Ich habe es an einer Stelle platziert, die ein "Missverständnis" hervorruft ... Korrektur erforderlich.)
Aus dem Obigen ergeben sich folgende empfohlene Anwendungsfälle für die beiden Plotfunktionen.
-"Python for Data Analysis": (O'reilly Media) http://shop.oreilly.com/product/0636920023784.do -"Python for Finance": (O'reilly Media) http://shop.oreilly.com/product/0636920032441.do -Offizielle Dokumentation http://matplotlib.org/contents.html, http://pandas.pydata.org/pandas-docs/stable/visualization.html
Recommended Posts