Python 在seaborn中绘制另一列数据的覆盖图,提及较少,但图形值重复

Python 在seaborn中绘制另一列数据的覆盖图,提及较少,但图形值重复,python,dataframe,seaborn,Python,Dataframe,Seaborn,我找不到合适的方式在标题中表达我的问题,所以我要更好地解释一下,我在seaborn中做了一个群集图,Y轴上是情绪,X轴上是符号,符号被提及了一定的次数,因此它被推出,以显示在X轴上更大的提及范围,我试图覆盖另一列“平均情绪”数据,我只需要绘制一次点,但由于平均值技术上与提及次数相关,它在图形上基本上会在平均值所在的位置创建一条线,几乎就像一个重复值。 正如你所看到的,我只需要这个值一次,我不能仅仅使用某种函数来绘制pandas或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')