我有一个温度随时间变化的二维数组数据。大约有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()
不过,我需要的是一条曲线,它将随温度的升高而变化。基本上,一条线将位于数据点的中间。
我用Google搜索了一些解决方案,但是我发现的建议是在一个x具有多个y值的情况下如何计算平均值。我知道该怎么做,但是在这种情况下并没有帮助。
我的下一个想法是使用循环来计算每2个相邻点的平均值。但是我不确定如何做到最好,还有没有更好的解决方案。
此外,我了解我需要计算另一个数组。绘图仅用于表示。
答案 0 :(得分:0)
如果我不正确,则您要绘制的是趋势线。您可以使用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()
这将以虚线的洋红色绘制趋势线