繁体   English   中英

如何绘制散点图的平均线?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM