[英]How can I plot an average line for a scatter plot?
我在下面有df,我想创建3个散点图(天与A,天与B,天与C),显示所有数据点以及一条通过每天平均值的线。
plt.plot(df.iloc[:,0],df.iloc[:,3], 'b')
给我一条穿过每个单点的线(第三个图),但是我想要一条线通过平均值。
这是我的代码:
data=np.array([[1,4.4,40.1,55],
[1,4.5,40.6,45.6],
[1,4.4,41.5,61.3],
[4,10,26,79.4],
[4,11.2,25.3,80.9],
[4,10.5,23.6,84],
[10,5.6,12.7,58.2],
[10,6,10.9,60.8],
[10,7.3,8.7,70.5,],
[15,2.5,5.4,98.7],
[15,2.7,6.2,95.3],
[15,2.8,4.7,88.9],
[25,0.8,3.3,25.4],
[25,0.5,1,28.6],
[25,1,5,23.6]])
df = pd.DataFrame(data[:,0:],columns=['days','A','B','C'])
plt.subplot(3, 1, 1)
plt.plot(df.iloc[:,0],df.iloc[:,1], 'ro')
plt.subplot(3, 1, 2)
plt.plot(df.iloc[:,0],df.iloc[:,2], 'ro')
plt.subplot(3, 1, 3)
plt.plot(df.iloc[:,0],df.iloc[:,3], 'ro')
plt.plot(df.iloc[:,0],df.iloc[:,3], 'b')
您应该只创建一个带有平均值的向量并将其绘制:
plt.plot(df.iloc[:,0], df.iloc[:,3].mean() + np.zeros_like(df.iloc[:,3]), 'g--')
您可以使用groupby
对值进行分组,然后绘制平均值。 到组,发现平均的方法改编自这个答案。 其余部分是密谋部分。
df = pd.DataFrame(data[:,0:],columns=['days','A','B','C'])
df_mean = df.groupby('days')['A','B','C'].mean()
plt.subplot(3, 1, 1)
plt.plot(df.iloc[:,0],df.iloc[:,1], 'ro')
plt.plot(df_mean.index, df_mean['A'], '-r')
plt.subplot(3, 1, 2)
plt.plot(df.iloc[:,0],df.iloc[:,2], 'ro')
plt.plot(df_mean.index, df_mean['B'], '-r')
plt.subplot(3, 1, 3)
plt.plot(df.iloc[:,0],df.iloc[:,3], 'ro')
plt.plot(df_mean.index, df_mean['C'], '-r')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.