如何在 Seaborn 中绘制与使用色调的条形图相结合的线图?

问题描述 投票:0回答:1

在Python中,我有一个数据框

df
,其中包含列
x
class
ratio
cnt

我之前通过聚合一些数据获得了这个数据,所以我知道每个

(x, class)
对都有一个唯一的行。我的想法是,我想看到每个
ratio
cnt
x
class
分割。

要显示

ratio
,我想使用条形图,要显示
cnt
,我想使用线图。这应该在双轴上完成。

根据我读到的类似问题的许多答案,我尝试了以下方法:

plt.figure(figsize=(15,8))
ax1 = sns.barplot(x="x", y="ratio", hue="class", data=df)
ax2 = ax1.twinx()
sns.pointplot(x="x", y='cnt', data=df, hue="class", color='red', ax=ax2)
ax2.grid(False)

问题是,这给出的输出并不是我真正需要的,因为这输出了很多行,每行一行

class

我想要的是为

cnt
的所有值都有一个独特的线图。我不太关心用
class
分割线图。我这样做只是为了确保标记出现在每个栏顶部的正确位置。但这不是我得到的输出。

感谢您的时间和帮助!

python seaborn bar-chart hue line-plot
1个回答
0
投票

默认情况下,

sns.pointplot()
使用较小的“闪避”距离。添加
dodge=0.4
可能适合您的情况。

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
plt.figure(figsize=(15, 8))
ax1 = sns.barplot(x="day", y="total_bill", hue="sex", errorbar=None, data=tips, palette='spring')
ax2 = ax1.twinx()
sns.pointplot(x="day", y='tip', data=tips, hue="sex", dodge=0.4, palette='winter', legend=False, ax=ax2)

plt.show()

aligning sns.pointplot with hue

© www.soinside.com 2019 - 2024. All rights reserved.