将日期代码添加到 matplotlib/python 图表

2024-01-17

我有一个听起来很简单的问题,但它让我发疯了好几天。我有一个历史时间序列,分为两个列表:第一个列表包含价格,假设 P = [1, 1.5, 1.3 ...],而第二个列表包含相关日期,假设 D = [01/01 /2010, 02/01/2010...]。我想做的是绘制其中一些日期(当我说“一些”时,是因为到目前为止我得到的“最佳”结果是将所有这些日期显示为股票代码,因此在x 轴),当您放大时,会显示更多细节。这张图现在有 Matplotlib 制作的渐进式自动范围:

我想要绘制与数据点相关的日期值,而不是 0、200、400 等。此外,当我放大时,我得到以下信息:

除了获取 0 到 200(20、40 等)之间的详细信息之外,我还想获取列表中附加的日期。 我确信这是一个容易解决的问题,但我对 Matplotlib 和 Python 都是新手,任何提示将不胜感激。提前致谢


Matplotlib 对绘制日期有复杂的支持。我建议使用 AutoDateFormatter 和 AutoDateLocator。它们甚至是特定于区域设置的,因此它们根据您的区域设置选择月份名称。

import matplotlib.pyplot as plt
from matplotlib.dates import AutoDateFormatter, AutoDateLocator

xtick_locator = AutoDateLocator()
xtick_formatter = AutoDateFormatter(xtick_locator)

ax = plt.axes()
ax.xaxis.set_major_locator(xtick_locator)
ax.xaxis.set_major_formatter(xtick_formatter)

EDIT

要与多个子图一起使用,请使用多个定位器/格式化程序对:

import datetime
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.dates import AutoDateFormatter, AutoDateLocator, date2num

x = [datetime.datetime.now() + datetime.timedelta(days=30*i) for i in range(20)]
y = np.random.random((20))

xtick_locator = AutoDateLocator()
xtick_formatter = AutoDateFormatter(xtick_locator)

for i in range(4):
    ax = plt.subplot(2,2,i+1)
    ax.xaxis.set_major_locator(xtick_locator)
    ax.xaxis.set_major_formatter(xtick_formatter)
    ax.plot(date2num(x),y)


plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将日期代码添加到 matplotlib/python 图表 的相关文章

随机推荐