seaborn 图例放在图外
时间: 2024-08-16 11:06:42 浏览: 45
Seaborn是一个基于matplotlib的数据可视化库,它提供了丰富的统计图形。如果想让seaborn的图例(legend)显示在图表之外,可以利用`legend_out=True`选项创建一个新的图例框,并将其放置在您想要的位置。下面是一个简单的例子:
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 创建数据
df = sns.load_dataset("iris")
sns.set_theme(style="whitegrid")
# 绘制散点图,然后将图例移出
g = sns.scatterplot(data=df, x="sepal_length", y="petal_width", hue="species")
plt.legend(outside=(1, 0.5), frameon=False) # 设置图例在右侧上半部分
# 显示图形
plt.show()
```
在这个示例中,`outside`参数接受两个值,分别对应x轴方向和y轴方向的比例偏移,负数表示向左或向下移动。`frameon=False`会移除边框。
相关问题
用seaborn绘制堆积柱状图和折线图到一张画布上,堆积柱状图和折线图分别使用不同的Y轴,但是图例放在一起
以下是一个示例代码,其中使用seaborn中的titanic数据集来绘制堆积柱状图和折线图:
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 加载数据集
titanic = sns.load_dataset('titanic')
# 创建画布和两个子图
fig, ax1 = plt.subplots(figsize=(10, 6))
ax2 = ax1.twinx()
# 绘制堆积柱状图
sns.countplot(x='class', hue='survived', data=titanic, ax=ax1)
ax1.set_ylabel('Count')
# 绘制折线图
sns.lineplot(x='class', y='fare', data=titanic, ax=ax2, color='r')
ax2.set_ylabel('Fare')
# 设置图例
ax1.legend(['Not Survived', 'Survived', 'Fare'], loc='upper left')
# 显示图形
plt.show()
```
结果如下图所示:
![stacked_bar_line_plot.png](https://i.loli.net/2021/06/02/RVpJbFw8sHdIeT2.png)
用seaborn绘制堆积柱状图和折线图到一张画布上,堆积柱状图和折线图分别使用不同的Y轴,但是堆积柱状图和折线图的图例放在一起
以下是一个示例代码,用于绘制堆积柱状图和折线图到一张画布上,并将它们的图例放在一起:
```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”位置显示它们。
阅读全文