Lorsque je dessine un graphique de série chronologique à l'aide d'un tracé Python, la conversion de date ne fonctionne pas correctement. Par exemple, 2020-01-01 est affiché par erreur comme 0051-01-01.
Affichez le graphe avec la commande "Data frame.plot (...)" pour le data frame généré par Pandas, et utilisez "mdates.DateFormatter ('% Y-% m-% d')" pour "Format YMD". J'ai constaté que la date ne s'affiche pas correctement lorsque je la règle sur. Lorsque j'exécute le code ci-dessous, la date sur l'axe horizontal ne s'affiche pas correctement.
/home/sampletest/sample.py
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
#Définissez un ensemble de données.(La date est datetime.Décrivez en datetime. Noté dans le type de date)
dat = [
[datetime.datetime(2020,1,1),4,10],
[datetime.datetime(2020,1,2),7,7],
[datetime.datetime(2020,1,3),10,4],
[datetime.datetime(2020,1,4),13,2],
[datetime.datetime(2020,1,5),17,1],
[datetime.datetime(2020,1,6),12,4],
[datetime.datetime(2020,1,7),9,3],
[datetime.datetime(2020,1,8),7,8],
[datetime.datetime(2020,1,9),5,9],
[datetime.datetime(2020,1,10),3,12],
]
dat=pd.DataFrame(dat,columns=["DATE","Y","Z"])
dat.set_index("DATE",inplace=True) #Définissez la date affichée sur l'axe horizontal sur l'index du DataFrame.
print(dat)
fig = sns.mpl.pyplot.figure() #Créez un objet pour dessiner le graphique.
ax=dat.plot(marker="o",figsize=(15, 5)) #Dataframe.Le dessin d'un graphique au format tracé provoque une erreur
ax.legend() #Dessinez une légende
#Paramètres de format de graphique(Définissez la méthode d'affichage de la date sur l'axe horizontal.)
days = mdates.DayLocator(bymonthday=None, interval=2, tz=None) #Axe horizontal: "Tous les jours" est affiché.(Sans cette ligne, la date sera dupliquée)
daysFmt = mdates.DateFormatter('%Y-%m-%d') #Axe horizontal: Format Y-M-Réglez sur D.
ax.xaxis.set_major_locator(days) #Affichez la date sur l'axe horizontal.
ax.xaxis.set_major_formatter(daysFmt) #Affichez la date sur l'axe horizontal.
fig.autofmt_xdate() #La date sur l'axe horizontal est inclinée pour qu'elle soit facile à voir.
#Donnez un nom au graphique
ax.set_xlabel('Date') #Définir le titre de l'axe X
ax.set_ylabel('Y') #Définir le titre de l'axe Y
plt.title(r"TEST",fontname="MS Gothic") #Définissez le titre du graphique. Lors de la spécification du japonais, il est nécessaire de spécifier le nom de la police
#Définir la taille du graphique
fig.set_figheight(10)
fig.set_figwidth(20)
#Définir la plage d'affichage sur l'axe horizontal
ax.set_xlim(datetime.datetime(2020,1,1), datetime.datetime(2020,1,12))
Il est nécessaire de changer la ligne de date de la trame de données de datetime à Matplotlib date.
Ajoutez dat ['DATE'] = mdates.date2num (dat ['DATE']).
/home/sampletest/sample.py
import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
import pandas as pd
#Définissez un ensemble de données.(La date est datetime.Décrivez en datetime. Noté dans le type de date)
dat = [
[datetime.datetime(2020,1,1),4,10],
[datetime.datetime(2020,1,2),7,7],
[datetime.datetime(2020,1,3),10,4],
[datetime.datetime(2020,1,4),13,2],
[datetime.datetime(2020,1,5),17,1],
[datetime.datetime(2020,1,6),12,4],
[datetime.datetime(2020,1,7),9,3],
[datetime.datetime(2020,1,8),7,8],
[datetime.datetime(2020,1,9),5,9],
[datetime.datetime(2020,1,10),3,12],
]
dat=pd.DataFrame(dat,columns=["DATE","Y","Z"])
dat['DATE'] = mdates.date2num(dat['DATE']) #Ajouter ici Convertir les objets datetime en dates Matplotlib.
dat.set_index("DATE",inplace=True) #Définissez la date affichée sur l'axe horizontal sur l'index du DataFrame.
print(dat)
fig = sns.mpl.pyplot.figure() #Créez un objet pour dessiner le graphique.
ax=dat.plot(marker="o",figsize=(15, 5))
ax.legend() #Dessinez une légende
#Paramètres de format de graphique(Définissez la méthode d'affichage de la date sur l'axe horizontal.)
days = mdates.DayLocator(bymonthday=None, interval=2, tz=None) #Axe horizontal: "Tous les jours" est affiché.(Sans cette ligne, la date sera dupliquée)
daysFmt = mdates.DateFormatter('%Y-%m-%d') #Axe horizontal: Format Y-M-Réglez sur D.
ax.xaxis.set_major_locator(days) #Affichez la date sur l'axe horizontal.
ax.xaxis.set_major_formatter(daysFmt) #Affichez la date sur l'axe horizontal.
fig.autofmt_xdate() #La date sur l'axe horizontal est inclinée pour qu'elle soit facile à voir.
#Donnez un nom au graphique
ax.set_xlabel('Date') #Définir le titre de l'axe X
ax.set_ylabel('Y') #Définir le titre de l'axe Y
plt.title(r"TEST",fontname="MS Gothic") #Définissez le titre du graphique. Lors de la spécification du japonais, il est nécessaire de spécifier le nom de la police
#Définir la taille du graphique
fig.set_figheight(10)
fig.set_figwidth(20)
#Définir la plage d'affichage sur l'axe horizontal
ax.set_xlim(datetime.datetime(2020,1,1), datetime.datetime(2020,1,12))
Recommended Posts