【问题标题】:Change tick frequency on X (time, not number) frequency in matplotlib在 matplotlib 中更改 X(时间,而不是数字)频率的刻度频率
【发布时间】:2014-08-27 23:29:29
【问题描述】:

我的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()

【问题讨论】:

  • 你用的是什么版本的mpl?
  • 我真的不明白你的问题。
  • 您确定只显示 2 个点吗?您可以这样做来查看绘图认为它对数据的看法: plt.gca().lines[0].get_data() 这些点是否可能靠得太近了?

标签: python matplotlib


【解决方案1】:

无论是什么原因,默认情况下您只获得 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

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 2020-10-01
    • 2018-01-24
    • 2020-04-11
    • 1970-01-01
    • 2017-07-15
    • 2021-03-24
    • 2021-02-24
    相关资源
    最近更新 更多