我的数据存储为pandas数据帧。我使用matplotlib中的plot_date()函数创建了一个日期(对象格式)与百分位数(int64格式)的图表,并希望在预先指定的日期添加一些垂直线。
我已设法在预先指定的日期添加点标记,但似乎无法找到使它们成为垂直线的方法。
我在SO / SE上找到了关于如何向plot()添加垂直线的各种答案,但是在将我的数据转换为plot()可以使用的格式时遇到了问题,因此为什么我使用了plot_date ()。
示例数据:
date percentile
2012-05-30 3
2014-11-25 60
2012-06-15 38
2013-07-18 16
我绘制图表的代码如下:
x_data = data["date"]
y_data = data["percentile"]
plt.figure()
plt.plot()
#create a scatter chart of dates vs. percentile
plt.plot_date(x = x_data, y = y_data)
#now add a marker at prespecified dates - ideally this would be a vertical line
plt.plot_date(x = '2012-09-21', y = 0)
plt.savefig("percentile_plot.png")
plt.close()
不幸的是,我无法提供当前输出的图像,因为代码位于没有Web访问权限的终端上。
我非常感谢任何帮助 - 也就我如何提出问题而言,因为我对SO / SE不熟悉。
谢谢。
答案 0 :(得分:5)
在MatPlotLib 1.4.3中,这有效:
import datetime as dt
plt.axvline(dt.datetime(2012, 9, 21))
传递字符串样式的日期(2012-09-21
)不起作用,因为MPL不知道这是一个日期。无论用于加载文件的代码是什么,都可能隐含地从字符串中创建datetime
个对象,这就是调用调用的原因。
此外,在MPL 1.4.3中,我不需要致电plt.plot_date(data['date'], ...)
,只要plt.plot(data['date'], ...)
列是{{1}的列,只需调用data['date']
即可。对象。
答案 1 :(得分:2)