Python 使用matplotlib更改绘图中的xaxis范围值

Python 使用matplotlib更改绘图中的xaxis范围值,python,matplotlib,plot,Python,Matplotlib,Plot,我正在绘制数据帧df_no_missing df_no_missing.head() TIMESTAMP datetime64[ns] P_ACT_KW float64 PERIODE_TARIF object P_SOUSCR float64 SITE object TARIF object depassement

我正在绘制数据帧df_no_missing

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的变化。 python代码如下所示:

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()
我得到一个这样的图(附图)

我的问题是如何在xaxis中显示时间戳,我的意思是我需要查看数据帧中指示的时间戳,例如:23:10:00、23:20:00、23:30:00、23:40:00、23:50:00。而不是01:00,04:00,07:00

如果你能帮助我,谢谢你


Bests

您可以在
设置主格式设置程序之前添加
设置主格式定位器

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 )

通常,您可以告诉绘图库,它应该为轴使用标签列表。。。请参阅点图文档:。它有一个设置xaxis的
order
参数。您可以试试看。@Nefario博士,谢谢您的回复,我在这行中添加订单选项?plt.plot(x,y,marker='o',label='P_SOUSCR')是的,试试看。我希望它能起作用。不,它不起作用。
print(x)
的输出是什么?谢谢路易斯,当我在ax.xaxis.set_major_locator(mdates.MinuteLocator(byminute=range(0,60,10))之前做ax.set_xlim(['23:10:00','23:50:00'])时,如果数据类型是
'23:10:00'
'23:50:00'
,则不起作用?时间戳149非空datetime64[ns]我已更新了答案,请尝试一下。你也可以尝试:
minx=x.min()
maxx=x.max()
,如果你想在绘图中显示整个范围。很高兴它有帮助,祝你玩得开心!