用seaborn绘制堆积柱状图和折线图到一张画布上,堆积柱状图和折线图分别使用不同的Y轴,但是堆积柱状图和折线图的图例放在一起
时间: 2024-05-15 12:16:39 浏览: 163
以下是一个示例代码,用于绘制堆积柱状图和折线图到一张画布上,并将它们的图例放在一起:
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 生成数据
tips = sns.load_dataset("tips")
grouped = tips.groupby(["day", "sex"])["total_bill"].sum().reset_index()
# 绘制堆积柱状图
sns.set_style("whitegrid")
ax1 = sns.barplot(x="day", y="total_bill", hue="sex", data=grouped, palette="Set2")
# 添加第二个Y轴和折线图
ax2 = ax1.twinx()
sns.lineplot(x="day", y="tip", data=tips, ax=ax2, linewidth=2.5, color="red")
# 设置Y轴标签
ax1.set_ylabel("Total Bill")
ax2.set_ylabel("Tip")
# 设置图例
handles1, labels1 = ax1.get_legend_handles_labels()
handles2, labels2 = ax2.get_legend_handles_labels()
handles = handles1 + handles2
labels = labels1 + labels2
plt.legend(handles, labels, loc="upper left")
# 显示图形
plt.show()
```
这段代码使用Seaborn加载了一个小费数据集,并使用数据集创建了一个包含每天不同性别的总账单的分组数据集。然后,使用Seaborn绘制了一个堆积柱状图,并使用Matplotlib的twinx()方法添加了第二个Y轴和折线图。最后,将两个图例的标签和句柄组合在一起,并在“upper left”位置显示它们。
阅读全文