【问题标题】:Make a Scatter Plot in matplotlib with dates on x axis and values on y在 matplotlib 中制作散点图,x 轴为日期,y 轴为值
【发布时间】:2016-11-10 10:30:33
【问题描述】:

我无法制作包含日期数组和一组 PM 2.5 值的散点图。我的列表如下所示:

dates = ['2015-12-20','2015-09-12']  
PM_25 = [80, 55]

【问题讨论】:

  • plt.scatter(dates, PM_25) ??
  • 如果这不起作用,错误信息是什么?您可能必须将日期转换为日期时间。如果你有熊猫,你可以 [pd.to_datetime(d) for d in dates]
  • 我收到这个错误:ValueError: invalid literal for float(): 2010-01-01

标签: python list matplotlib statistics scatter


【解决方案1】:
import pandas as pd
dates = ['2015-12-20','2015-09-12']  
PM_25 = [80, 55]
dates = [pd.to_datetime(d) for d in dates]

plt.scatter(dates, PM_25, s =100, c = 'red')

s 设置大小 c 设置颜色

还有一大堆其他参数: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

【讨论】:

  • 这太棒了!然后我可以更具体一点,给每年几个月甚至季节性标签吗?
  • 当我尝试在x 轴上使用datetime 制作散点图时,我得到TypeError: invalid type promotion。您的解决方案不起作用。
  • 我也遇到了invalid type promotion 错误,例如@dwanderson 和@BCR。将日期转换更改为 dates = [d.to_pydatetime() for d in dates] 对我有用。
  • @TiffanyG.Wilson 和其他人有无效类型的促销错误。这样做 plt.scatter(list(df.time.values),list(df.y.values),color='r')
  • @Apex 谢谢。它通过使用您的代码来工作。
【解决方案2】:

如果绘图的数据包含日期,您可以使用 plot_date

类似于 plot() 命令,除了 x 或 y(或两者)数据是 被认为是日期,并且轴被标记。

首先将列表转换为日期时间,如@RSHARP 所示,

dates = [pd.to_datetime(d) for d in dates]

那么你可以使用 plot_date

plt.plot_date(dates, PM_25, c = 'red')

【讨论】:

    【解决方案3】:

    pandas 数据框通常更常见。所以对我来说很有效:

    import pandas as pd
    dates = ['2015-12-20','2015-09-12']  
    PM_25 = [80, 55]
    data = pd.DataFrame({'dates':pd.to_datetime(dates),'PM_25':PM_25})
    data.plot(x='dates',y='PM_25',marker='o',linestyle='none')
    

    你可以这样定义:

    data.plot(x='dates',y='PM_25',marker='o',linestyle='none',color='red',ms=3)
    

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 2021-11-16
      • 2019-07-07
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多