2016-08-16 48 views
2

我正在繪製dataframe df_no_missing的圖。用matplotlib更改繪圖中的xaxis範圍值

df_no_missing.head() 
TIMESTAMP  datetime64[ns] 
P_ACT_KW    float64 
PERIODE_TARIF   object 
P_SOUSCR    float64 
SITE      object 
TARIF     object 
depassement    float64 
dtype: object 


Out[236]: 

    TIMESTAMP P_ACT_KW PERIODE_TARIF P_SOUSCR SITE TARIF depassement date time 

    2015-08-01 23:10:00 248.0 HC 425.0 ST GEREON TURPE_HTA5 0.0 2015-08-01 23:10:00 


    2015-08-01 23:20:00 244.0 HC 425.0 ST GEREON TURPE_HTA5 0.0 2015-08-01 23:20:00 


    2015-08-01 23:30:00 243.0 HC 425.0 ST GEREON TURPE_HTA5 0.0 2015-08-01 23:30:00 


    2015-08-01 23:40:00 238.0 HC 425.0 ST GEREON TURPE_HTA5 0.0 2015-08-01 23:40:00 

    2015-08-01 23:50:00 234.0 HC 425.0 ST GEREON TURPE_HTA5 0.0 2015-08-01 23:50:00 

我做了一個代表P_ACT_KW和P_SOUSCR與TIMESTAMP的變化的圖。 蟒蛇代碼如下:

fig = plt.figure(figsize=(11, 6), dpi=100) 
ax = fig.add_subplot(111) 
yearFmt = mdates.DateFormatter("%H:%M:%S") 

ax.xaxis.set_major_formatter(yearFmt) 
sns.set_style("darkgrid") 
x = pd.to_datetime(df_no_missing.TIMESTAMP, format="%h:%m") 
y = df_no_missing.P_ACT_KW 
z = df_no_missing.P_SOUSCR 
plt.plot(x, y, marker='o', label='P_SOUSCR') 
plt.plot(x, z, marker='o', linestyle='--', color='g', label='P_ACT_KW') 
plt.xlabel('temps') 
plt.ylabel('puissance') 
plt.title('variation de la puissance') 
plt.legend() 
plt.show() 

我得到這樣一個圖(附圖片)enter image description here

我的問題是我怎麼能顯示在x軸的時間戳,我的意思是我需要看到時間戳在數據框中顯示爲檢驗在這裏:23:10:00,23:20:00,23:30:00,23:40:00,23:50:00。而不是01:00,04:00,07:00 ...

謝謝你,如果你能幫助我

最好成績

+0

一般您可以告訴繪圖庫它應該使用該軸的標籤列表...請參閱pointplot文檔:https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.pointplot.html#seaborn。點圖。它有這個設置x軸的'order'參數。你可以試試。 –

+0

@Dr。 Nefario,感謝您的回覆,我在這一行添加了訂單選項? plt.plot(x,y,marker ='o',label ='P_SOUSCR') – Poisson

+0

是的,試試看。我希望它能起作用。 –

回答

0

您可以添加set_major_locatorset_major_formatter

import matplotlib.dates as mdates 

yearFmt = mdates.DateFormatter("%H:%M:%S") 

minx = pd.to_datetime('2015-08-01 23:10:00') 
minx = pd.to_datetime('2015-08-01 23:50:00') 

ax.set_xlim([ minx, maxx ]) 
ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=range(0,60,10))) 
ax.xaxis.set_major_formatter(yearFmt) 
+0

謝謝路易斯,當我在ax.xaxis.set_major_locator(mdates.MinuteLocator()之前做過ax.set_xlim(['23:10:00','23:50:00'') byminute = range(0,60,10))),它不起作用 – Poisson

+0

哪種數據類型是「23:10:00」和「23:50:00」? – Luis

+0

TIMESTAMP 149非null datetime64 [ns] – Poisson