【问题标题】:Errors plotting a trendline using matplotlib and numpy使用 matplotlib 和 numpy 绘制趋势线时出错
【发布时间】:2021-04-30 23:12:50
【问题描述】:

编辑以包含完整代码并在尝试一种解决方案后:

当按照教程尝试在我创建的散点图,代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('dataSet.csv')

date = df['Date'].astype('datetime64')
actual = df['Actual'].astype('float64')

plt.figure(figsize=(20,10))
plt.scatter(date, actual, color='orange')

z = np.polyfit(date, actual, 1)
p = np.poly1d(z)

plt.plot(date, p(date), "r--")

plt.show()

如果我将 z 的公式替换为:

z = np.polyfit(list(date), actual, 1)

这是一个稍微不同的错误,但仍然是一个错误: 类型错误:+ 不支持的操作数类型:'Timestamp' 和 'float'

【问题讨论】:

  • 请包含一个重现问题的玩具数据集。首先 - 我看不到您在这段代码中绘制拟合线的位置。
  • 如何在此处添加 csv 数据以使其最有用?
  • 在外部上传并发布链接。确保它可以公开访问。

标签: python pandas numpy matplotlib


【解决方案1】:

我刚刚在您的数据集上尝试了这种方法,并且成功了:

df["Date"] = pd.to_datetime(df["Date"])
plt.scatter(df["Date"]), df["Actual"])

【讨论】:

  • 我确实尝试过这个解决方案,但不幸的是它只是改变了错误消息
  • 不要使用df['Date'].astype('datetime64'),而是使用pd.to_datetime()函数。然后,当您想将 x 和 y 赋予 plt.scatter 时,使用 List() 函数将它们更改为列表。我想这会解决你的问题。
  • 我刚刚编辑了我的答案,请检查一下,让我知道它是如何工作的。
  • 这对我绘制趋势线仍然不起作用。散点图不是问题,是趋势线造成了问题。
  • 特别是这一行:z = np.polyfit(date, actual, 1)
猜你喜欢
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 2017-05-28
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多