我的数据存储为pandas dataframe。我创建了一个日期(对象格式)与使用matplotlib中的plot_date()函数来计算百分位数(int 64格式),并希望在预先指定的日期添加一些垂直线。
我已经设法在预先指定的日期添加点标记,但似乎无法找到一种方法使它们成为垂直线。
我在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()
型
不幸的是,我不能提供当前输出的图像,因为代码是在一个没有网络访问的终端上。
任何帮助都非常感谢-也是在我如何问这个问题,因为我是相当新的SO / SE。
- 谢谢你-谢谢
2条答案
按热度按时间0md85ypi1#
在MatPlotLib 1.4.3中:
字符串
传递字符串样式的日期(
2012-09-21
)不起作用,因为MPL不知道这是一个日期。无论您使用什么代码来加载文件,都可能隐式地从字符串中创建datetime
对象,这就是plot调用工作的原因。此外,在MPL 1.4.3中,我不需要调用
plt.plot_date(data['date'], ...)
,只要data['date']
列是datetime
对象的列,只需调用plt.plot(data['date'], ...)
就可以了。祝你好运。
knpiaxh12#
使用pandas。这里有一个例子,也转换为时间戳以防万一:
字符串
下面是输出:
的数据