我正在factorplot(kind="bar")
与seaborn一起使用。
情节很好,只是图例放错了位置:太靠右了,文字超出了情节的阴影区域。
如何让 seaborn 将图例放置在其他地方,例如左上角而不是右中角?
我正在factorplot(kind="bar")
与seaborn一起使用。
情节很好,只是图例放错了位置:太靠右了,文字超出了情节的阴影区域。
如何让 seaborn 将图例放置在其他地方,例如左上角而不是右中角?
基于@user308827 的回答:您可以legend=False
在 factorplot 中使用并通过 matplotlib 指定图例:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")
titanic = sns.load_dataset("titanic")
g = sns.factorplot("class", "survived", "sex",
data=titanic, kind="bar",
size=6, palette="muted",
legend=False)
g.despine(left=True)
plt.legend(loc='upper left')
g.set_ylabels("survival probability")
plt
作用于当前轴。从FacetGrid
使用图获取轴。
g.fig.get_axes()[0].legend(loc='lower left')
在此处查看文档:https ://matplotlib.org/users/legend_guide.html#legend-location
添加这个只是为了将传奇带出情节:
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
在此处修改示例:
您可以使用legend_out = False
import seaborn as sns
sns.set(style="whitegrid")
titanic = sns.load_dataset("titanic")
g = sns.factorplot("class", "survived", "sex",
data=titanic, kind="bar",
size=6, palette="muted",
legend_out=False)
g.despine(left=True)
g.set_ylabels("survival probability")
seaborn >= 0.11.2
,例如seaborn.move_legend
kwargs
title
matplotlib.axes.Axes.legend
以及如何将图例置于绘图之外。sns.factorplot
,已重命名为seaborn.catplot
,一个图形级别的情节。python 3.8.11
, pandas 1.3.2
, matplotlib 3.4.3
,中测试seaborn 0.11.2
import matplotlib.pyplot as plt
import seaborn as sns
# load the data
penguins = sns.load_dataset('penguins', cache=False)
g = sns.displot(penguins, x="bill_length_mm", hue="species", col="island", col_wrap=2, height=3)
sns.move_legend(g, "upper left", bbox_to_anchor=(.55, .45), title='Species')
plt.show()
ax = sns.histplot(penguins, x="bill_length_mm", hue="species")
sns.move_legend(ax, "lower center", bbox_to_anchor=(.5, 1), ncol=3, title=None, frameon=False)
plt.show()
这就是我能够将图例移动到绘图内的特定位置并更改绘图的方面和大小的方式:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set(style="ticks")
figure_name = 'rater_violinplot.png'
figure_output_path = output_path + figure_name
viol_plot = sns.factorplot(x="Rater",
y="Confidence",
hue="Event Type",
data=combo_df,
palette="colorblind",
kind='violin',
size = 10,
aspect = 1.5,
legend=False)
viol_plot.ax.legend(loc=2)
viol_plot.fig.savefig(figure_output_path)
这对我来说可以改变情节的大小和方面,并将图例移到情节区域之外。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set(style="ticks")
figure_name = 'rater_violinplot.png'
figure_output_path = output_path + figure_name
viol_plot = sns.factorplot(x="Rater",
y="Confidence",
hue="Event Type",
data=combo_df,
palette="colorblind",
kind='violin',
size = 10,
aspect = 1.5,
legend_out=True)
viol_plot.fig.savefig(figure_output_path)
看来您可以直接致电:
g = sns.factorplot("class", "survived", "sex",
data=titanic, kind="bar",
size=6, palette="muted",
legend_out=False)
g._legend.set_bbox_to_anchor((.7, 1.1))
如果您想自定义您的图例,只需使用该add_legend
方法。它采用与 matplotlib 相同的参数plt.legend
。
import seaborn as sns
sns.set(style="whitegrid")
titanic = sns.load_dataset("titanic")
g = sns.factorplot("class", "survived", "sex",
data=titanic, kind="bar",
size=6, palette="muted",
legend_out=False)
g.despine(left=True)
g.set_ylabels("survival probability")
g.add_legend(bbox_to_anchor=(1.05, 0), loc=2, borderaxespad=0.)