2017-05-14 2 views
2

Ich habe eine Reihe, deren Index ist datetime, die ich plotten möchte. Ich möchte die Werte der Reihe auf der Y-Achse und den Index der Reihe auf der X-Achse darstellen. Die Series sieht wie folgt aus:Ändern der Formatierung einer Datetime-Achse in Matplotlib

2014-01-01  7 
2014-02-01  8 
2014-03-01  9 
2014-04-01  8 
... 

ich eine Grafik erzeugen mit plt.plot(series.index, series.values). Aber die Grafik wie folgt aussieht:

graph

Das Problem ist, dass ich nur Jahr und Monat haben möchte. Die Grafik enthält jedoch Stunden, Minuten und Sekunden. Wie kann ich sie entfernen, damit ich meine gewünschte Formatierung bekomme?

+1

Könnten Sie auch Ihren Code teilen diese Grafik zu generieren? Es wird Ihnen eine bessere Lösung bieten. –

+0

Dank @ScottBoston, fügte ich den graphischen Befehl hinzu. – Sheryl

+1

Willst du Tage? – pshep123

Antwort

4
# sample data 
import numpy as np 
import pandas as pd 

N = 30 
drange = pd.date_range("2014-01", periods=N, freq="MS") 
values = {'values':np.random.randint(1,20,size=N)} 
df = pd.DataFrame(values, index=drange) 

# use formatters to specify major and minor ticks 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

fig, ax = plt.subplots() 
ax.plot(df.index, df.values) 
ax.set_xticks(df.index) 
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m")) 
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m")) 
_=plt.xticks(rotation=90)  

time series plot

6

Sie können so etwas wie dies versuchen:

import matplotlib.dates as mdates 
import matplotlib.pyplot as plt 
df = pd.DataFrame({'values':np.random.randint(0,1000,36)},index=pd.date_range(start='2014-01-01',end='2016-12-31',freq='M')) 
fig,ax1 = plt.subplots() 
plt.plot(df.index,df.values) 
monthyearFmt = mdates.DateFormatter('%Y %B') 
ax1.xaxis.set_major_formatter(monthyearFmt) 
_ = plt.xticks(rotation=90) 

enter image description here

+1

das ist sehr hilfreich - danke! – MaxU

Verwandte Themen