Plot 如何使seaborn绘图显示并考虑点的多样性

Plot 如何使seaborn绘图显示并考虑点的多样性,plot,regression,seaborn,scatter-plot,Plot,Regression,Seaborn,Scatter Plot,我从数据帧中提取了这两个数据列表 [5,5,5,5,4,4,5,4,4,4,4,5,5](第1列) [5,5,5,4,4,3,2,2,3,2,2,4,2,2,5](第2列) 从scipy库调用stats.preasonr得到(-0.5062175977346661,0.200528064412476),表示负相关。然而,最合适的电话线 graph = sns.jointplot(x = 'col1name', y = 'col2name', data = df_name, kind = 'reg

我从数据帧中提取了这两个数据列表

[5,5,5,5,4,4,5,4,4,4,4,5,5](第1列)

[5,5,5,4,4,3,2,2,3,2,2,4,2,2,5](第2列)

从scipy库调用stats.preasonr得到(-0.5062175977346661,0.200528064412476),表示负相关。然而,最合适的电话线

graph = sns.jointplot(x = 'col1name', y = 'col2name', data = df_name, kind = 'reg')
这是积极的。我意识到这是因为我认为最佳拟合线的计算没有考虑点的多重性。特别是,(5,2)只考虑一次,即使发生3次。那么我该怎么做呢?(a)有人可以看这个图,告诉多少学生用一个数据点表示,(b)最佳拟合线考虑了点的多重性

下面是一张情节图:


重合点不会被忽略。这是一个添加一些随机噪声以显示所有点的可视化,并为“col1”中的每个值标记“col2”的平均值。在应用随机抖动之前,还计算r值

从matplotlib导入pyplot作为plt
导入seaborn作为sns
作为pd进口熊猫
将numpy作为np导入
从scipy.stats导入pearsonr
df=pd.DataFrame({'col1':[5,5,5,4,4,5,4,4,5,5,4,2,4,5,5,5],
‘col2’:[5,5,5,4,4,3,2,2,3,2,2,4,2,2,2,5]})
r、 p=pearsonr(df['col1'],df['col2']))
xs=np.unique(df['col1'])
ys=[df[df['col1']==x]['col2'].mean()表示x在xs中]
df['col1']+=np.随机.均匀(-0.1,0.1,len(df))
df['col2']+=np.随机.均匀(-0.1,0.1,len(df))
g=sns.jointplot(x='col1',y='col2',data=df,kind='reg')
g、 ax_joint.scatter(x=xs,y=ys,marker='x',color='crimson')#显示平均值
g、 text(2.5,4.5,f'$r={r:.2f}$',color='navy')#显示r值
plt.show()


正如预期的那样,回归线似乎非常接近平均值。对于<代码> COL1==5 < /代码>在4的5, 2和2的3有4个值,它们的平均值是3.78。

如果这回答了你的问题,你可以考虑上投票和/或答案。