matplotlib 更改X(时间,而不是数字)频率上的滴答频率

9o685dep  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(98)

我的python绘图数据仅显示x轴上的2个点。
我想要更多,但不知道怎么做。

x = [ datetime.datetime(1900,1,1,0,1,2),
      datetime.datetime(1900,1,1,0,1,3),
      ...
      ]                                            # ( more than 1000 elements )
y = [ 34, 33, 23, ............ ]

plt.plot( x, y )

X轴仅显示2个间隔点。我尝试使用.xticks,但不适用于X轴。它给出了以下错误:

TypeError: object of type 'datetime.datetime' has no len()
xmq68pz9

xmq68pz91#

无论是什么原因,默认情况下您只能获得2个报价,您可以通过使用日期定位器更改报价定位器来修复(自定义)它。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

x = [ datetime.datetime(1900,1,1,0,1,2),
      datetime.datetime(1900,1,1,0,1,3),
      ...
      ]                                            # ( more than 1000 elements )
y = [ 34, 33, 23, ............ ]

fig = plt.figure()
ax = fig.add_subplot(1,1,1)  
plt.plot( x, y )

ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=15))   #to get a tick every 15 minutes
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))     #optional formatting

您有多个定位器(例如:DayLocator、WeekdayLocator、MonthLocator等)在文档中阅读:
http://matplotlib.org/api/dates_api.html
也许这个例子会更有帮助:
http://matplotlib.org/examples/api/date_demo.html

相关问题