我有一个温度随时间变化的二维数组。大约有7500个x值和同样多的对应y值(所以每个x对应一个y值)。
它看起来是这样的:
中间的蓝线是我尝试绘制一条曲线图失败的结果,这条曲线图将表示我的数据的平均值。代码:
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值的情况下计算平均值。我知道如何计算,但在这种情况下没有帮助。
我的下一个想法是使用循环来计算每2个邻近点的平均值。但我不确定如何做得最好,如果没有更好的解决方案。
另外,我知道我需要的是计算另一个数组。绘图仅用于表示。
发布于 2018-07-12 06:11:34
如果我理解正确的话,你要画的是一条趋势线。你可以通过使用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()
这将以虚线洋红色绘制趋势线
https://stackoverflow.com/questions/51294486
复制相似问题