【问题标题】:plotting a scatter plot for list/array in matplotlib在 matplotlib 中为列表/数组绘制散点图
【发布时间】:2014-08-05 05:30:01
【问题描述】:

我浪费了很多时间浏览互联网上给出的示例。但我就是想不通为什么我不能根据整数列表绘制一个简单的 datetime.date 对象列表图表

     appleProd1     appleProd2       appleProd3       appleProd4 ..... 70 Products

apple.com  2010-09-12     2008-01-01       2009-03-02        .......................

我想为发布日期绘制散点图,其中 x 轴为日期,y 轴为产品。我这样做

plt.subplot(1, 1, 1)
product_list = []
label_ticks = []
date_list = []
yval = 1

for prod, date in df.iteritems():  #date is a datetime.date object
    date = pd.to_datetime(date)   
    product = prod
    date_list.append(date)
    prod_list.append(prod)
    label_ticks.append(yval)

    yval+=1

plt.plot_date(date_list, label_ticks)

最后一行 plt.plot 给我一个错误说 TypeError: float() argument must be a string or a number 。我还尝试将两个列表都转换为 numpy 数组并使用相同的 plt.scatter。同样的错误。两个列表的长度相同。也参考了这个网站

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

有些日期是楠也。因此,使用 date2num 进行转换会出现错误。

【问题讨论】:

  • 您可以使用date2num 也可以在这里查看:stackoverflow.com/a/1574146/1898982
  • @jonie83 :这会将日期时间转换为浮点数,并且列表看起来很奇怪。日期被转换为 733962.0、733962.0、733604.0、733657.0 之类的东西。所以它并没有太大帮助。
  • 数字是自 0001 年 1 月 1 日以来的天数,浮点数是小时和秒
  • @MaxNoe :但我需要日期看起来像日期。

标签: python numpy matplotlib


【解决方案1】:

我发现了问题所在。 date_list 中确实有一些字符串值,所以 plt.plot 抱怨。 plt.plot 与 datetime.date 值列表一起工作得很好。无需将 datetime.date 转换为任何其他格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2021-10-14
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多