【问题标题】:Matplotlib: Scatterplot with dates and numeric valuesMatplotlib:带有日期和数值的散点图
【发布时间】:2017-07-14 17:18:45
【问题描述】:

我想生成一个简单的散点图,其中 X 轴为日期,Y 轴为数值,但出现类型提升错误。 数据来自熊猫数据框。

这是我在其中的值的一个小转储

X(熊猫系列):

....
179   2016-11-08 18:03:00
180   2016-11-08 18:16:00
181   2016-11-08 18:18:00
182   2016-11-08 18:19:00
183   2016-11-08 18:20:00
184   2016-11-08 18:21:00

名称:日期,长度:185,数据类型:datetime64[ns]

Y轴没问题:

....
180    18.266667
181    18.300000
182    18.316667
183    18.333333
184    18.350000

长度:185,数据类型:float64

如果我这样做:

plt.scatter(X,Y)
plt.show()

我收到类型提升错误。 感谢您的帮助!

【问题讨论】:

标签: python pandas matplotlib


【解决方案1】:

您收到此错误是因为plt.scatter() 只接受列表作为参数,您需要先使用pandas.Series.tolist() 将您的X 数据转换为列表,然后将其分散。假设您的数据是 Pandas DataFrame,df['dates'] 是您的日期列,df['values'] 是您的值列:

plt.scatter(df['dates'].tolist(), df['values'])
plt.show()

【讨论】:

  • 为什么散点图不能处理 pandas.Series 日期?这似乎是一个基本的事情......使用散点图绘制日期。
  • @J.A.Cado 也许可以根据数据的样子使用 Pandas 的功能进行数据可视化,something like this.
  • 嗯,也许…​​…虽然我更喜欢避免使用 pandas 的数据可视化魔法。除非您想快速轻松地绘制一些东西,否则 pandas viz 功能不会让您像 matplotlib 那样做太多的调整。尽管如此,为什么会出现类型提升错误? scatterplot 发生了什么,以至于它不允许您使用 pandas.series 日期?仅供参考,你的把戏奏效了,所以我不是在寻找修复,我只是想了解 scattorplot 的工作原理。
  • 我不知道你的问题的答案,也许打开一个问题或提出类似但不重复的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 2020-07-17
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多