在Python中绘制数组的平均值

4
我有一个二维数组,里面存储了与时间相关的温度数据。大概有7500个x值和相应的y值(所以每一个x都对应一个y)。
它看起来像这样: plot 中间的蓝线是我不成功的尝试绘制一条代表我的数据平均值的曲线。 代码:
import numpy as np
import matplotlib.pyplot as plt
data=np.genfromtxt("data.csv")
temp_av=[np.mean(data[1])]*len(data[0])
plt.figure()
plt.subplot(111)
plt.scatter(data[0],data[1])
plt.plot(data[0],temp_av)
plt.show()

然而我需要的是一条曲线,它将跟随温度上升。基本上是一条在数据点中间的线。
我搜索了一些解决方案,但我找到的都是针对一个x有多个y值的情况下如何计算平均值的建议。我知道如何做,但在这种情况下没有帮助。
我的下一个想法是使用循环来计算每两个相邻点的平均值。但我不确定怎么做最好,是否有更好的解决方案。
另外,我明白我需要计算另一个数组。绘图只是为了表示。

你使用循环计算平均值的想法是正确的 - 但是你应该为每个x值执行此操作,而不是每2个相邻点,至少如果我正确理解你想要的内容。 - MaVCArt
加权移动平均在Python中的实现 - igrinis
这个回答解决了你的问题吗?如何在Python Matplotlib点(散点)图中添加趋势线? - ti7
1个回答

1
如果我理解正确,你想绘制的是趋势线。你可以使用numpy函数“polyfit”来实现。如果这正是你想要的,请尝试对你的代码进行以下小修改。
import numpy as np
import matplotlib.pyplot as plt
data=np.genfromtxt("data.csv")
plt.figure()
plt.subplot(111)
plt.scatter(data[0],data[1])

pfit = np.polyfit(data[0], data[1], 1)
trend_line_model = np.poly1d(pfit)

plt.plot(data[0], trend_line_model(data[0]), "m--") 
plt.show()

这将绘制虚线品红色的趋势线。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接