Lors du traçage de données de séries chronologiques, etc. avec Python, pandas et matplotlib seront utilisés, mais le module d'analyse de données pandas a une fonction de tracé qui intègre certaines fonctions matplotlib, et ce pandas.plot et pure ( pure) J'ai réfléchi à la manière d'utiliser correctement matplotlib.plot.
Puisque pandas.plot utilise la fonction matplotlib pour implémenter sa fonction (en tant que wrapper), il est clair que le diagramme de tracé résultant (à la fois pandas.plot et pur matplotlib) sera à peu près le même. Le point de la bonne utilisation est de savoir s'il est (subjectivement) facile à utiliser ou non.
pandas est excellent pour gérer la structure DaraFrame, et des tracés de lignes de pliage peuvent être créés avec presque une ligne de commande.
Les données suivantes (classe pandas DataFrame) ont été préparées à titre d'exemple.
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
Données sur les taux d'intérêt directeurs et les taux d'intérêt effectifs américains de 2000 à 2014, et l'indice S & P 500. Ceci est tracé comme suit.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(Omis)
df_mkt.plot(grid=True, figsize=(10,4), secondary_y=['sp500'])
J'ai utilisé l'option "secondary_y" pour spécifier l'utilisation du bon axe, mais c'est très ** facile **.
La décoration de la figure comme le titre et l'étiquette d'axe n'est pas encore terminée, mais elle est presque terminée. Si vous voulez dessiner ceci avec matplotlib, vous avez besoin du code suivant.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
(Omis)
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)
(Dans ce dessin, il est nécessaire de spécifier que l'axe vertical est divisé en l'axe droit et l'axe gauche.) Pour le moment, le résultat du dessin avec le code ci-dessus est joint. (La finition est ** presque ** la même, mais l'étiquette Légende n'est pas organisée. Je la mets à un endroit qui donne un "malentendu" ... Correction requise.)
D'après ce qui précède, les cas d'utilisation recommandés pour les deux fonctions de tracé sont les suivants.
-Dans le cas de dessiner un graphique linéaire historique des données de séries temporelles traitées par pandas DataFrame, utilisez pandas.plot () docilement. -Pour les graphiques autres que les graphiques linéaires de données de séries temporelles, tels que les nuages de points ou les graphiques plus complexes, utilisez la fonction de traçage pure matplotlib au lieu du graphique pandas. (Parce qu'il existe de nombreux graphiques que pandas.plot ne prend pas en charge.)
-"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 -Documentation officielle http://matplotlib.org/contents.html, http://pandas.pydata.org/pandas-docs/stable/visualization.html
Recommended Posts