Python 在seaborn中绘制另一列数据的覆盖图,提及较少,但图形值重复
我找不到合适的方式在标题中表达我的问题,所以我要更好地解释一下,我在seaborn中做了一个群集图,Y轴上是情绪,X轴上是符号,符号被提及了一定的次数,因此它被推出,以显示在X轴上更大的提及范围,我试图覆盖另一列“平均情绪”数据,我只需要绘制一次点,但由于平均值技术上与提及次数相关,它在图形上基本上会在平均值所在的位置创建一条线,几乎就像一个重复值。 正如你所看到的,我只需要这个值一次,我不能仅仅使用某种函数来绘制pandas或seaborn的平均值,因为我计划使用已经制作好的自定义加权平均点 下面是输出和测试图形的代码Python 在seaborn中绘制另一列数据的覆盖图,提及较少,但图形值重复,python,dataframe,seaborn,Python,Dataframe,Seaborn,我找不到合适的方式在标题中表达我的问题,所以我要更好地解释一下,我在seaborn中做了一个群集图,Y轴上是情绪,X轴上是符号,符号被提及了一定的次数,因此它被推出,以显示在X轴上更大的提及范围,我试图覆盖另一列“平均情绪”数据,我只需要绘制一次点,但由于平均值技术上与提及次数相关,它在图形上基本上会在平均值所在的位置创建一条线,几乎就像一个重复值。 正如你所看到的,我只需要这个值一次,我不能仅仅使用某种函数来绘制pandas或seaborn的平均值,因为我计划使用已经制作好的自定义加权平均点
np.random.seed(5)
df = pd.DataFrame({
'Symbol': ['AMC', 'GME', 'BB', 'SPY', 'SPCE'],
'Mentions': [100, 75, 50, 25, 20],
'Avg.Sentiment':[.8,.7,.6,.5,.4]
})
df['Sentiment'] = df['Mentions'].apply(lambda x: (np.random.random(x) * 2) - 1)
df = df.explode('Sentiment')
pos = [0.0, 1.0]
colors = ['#FF5000', '#00C805']
cmap = LinearSegmentedColormap.from_list("",list(zip(pos,colors)))
matplotlib.cm.register_cmap("newmap", cmap)
sns.set_style("darkgrid")
sns.set(rc={'figure.figsize':(32,14)})
sns.set(font_scale=2.0)
dplot = sns.swarmplot(x="Symbol", y="Avg.Sentiment", color='black', data=df, marker='X', size=10)
dplot= sns.swarmplot(x="Symbol", y="Sentiment", hue='Sentiment',palette="newmap", data=df)
dplot.get_legend().remove()
plt.show()
我已经找到了解决方案,只需使用plt.scatter,您就可以从同一数据帧输入单个点,因此在我的例子中
plt.scatter(x="Symbol", y="Avg.Sentiment", data=df, color='black', marker='X')