gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:32:52 25 4
gpt4 key购买 nike

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

Zoom-out

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

Zoom-in

除了获得 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)

编辑

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

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

关于python - 将日期代码添加到 matplotlib/python 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com