向matplotlib/python ch添加日期标记

2024-05-29 05:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个听起来很简单的问题,但它让我抓狂了好几天。我有一个历史时间序列,分为两个列表:第一个列表包含价格,假设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都是新手,任何提示都将不胜感激。提前谢谢


Tags: 数据信息绘图列表matplotlib时间绘制图片
3条回答

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)

编辑

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

^{pr2}$

你可以用熊猫做时间序列的情节 有关详细信息,请参阅:http://pandas.pydata.org/pandas-docs/dev/timeseries.htmlhttp://pandas.pydata.org/pandas-docs/dev/generated/pandas.Series.plot.html

import pandas as pd    
DateStrList = ['01/01/2010','02/01/2010']
P = [2,3]
D = pd.Series([pd.to_datetime(date) for date in DateStrList])
series =pd.Series(P, index=D)
pd.Series.plot(series)
import matplotlib.pyplot as plt
import pandas
pandas.TimeSeries(P, index=D).plot()
plt.show()

相关问题 更多 >

    热门问题