我正在使用factorplot(kind="bar")seaborn.
情节很好,除了传说是错位的:右边太多,文字从情节的阴影区域出来.
如何让seaborn将传奇置于其他地方,例如左上角而不是右中角?
Tre*_*ney 50
seaborn >= 0.11.2使用seaborn.move_legend,适用于轴和图形水平图,并且它接受kwargs,例如title
matplotlib.axes.Axes.legend请参阅如何将图例从绘图中取出。sns.factorplot,现已重命名为seaborn.catplot,图形级图。g = sns.jointplot或g = sns.JointGrid,传说是在g.ax_joint,不是g。
sns.move_legend(g.ax_joint).move_legend用于移动图例,而不是更改图例标题或标签。这应该通过清理数据来完成。
python 3.10, pandas 1.5.0, matplotlib 3.5.2,seaborn 0.12.0
seaborn.object界面重新定位图例,该界面首次亮相于seaborn 0.12.0.import matplotlib.pyplot as plt
import seaborn as sns
# load the data
penguins = sns.load_dataset('penguins', cache=False)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
Jul*_*les 37
建立在@ user308827的答案:您可以使用legend=Falsefactorplot并通过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")
Run Code Online (Sandbox Code Playgroud)
use*_*827 13
修改http://web.stanford.edu/~mwaskom/software/seaborn/examples/factorplot_bars.html中的示例
您可以使用 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")
Run Code Online (Sandbox Code Playgroud)

在这里查看文档:https://matplotlib.org/users/legend_guide.html#legend-location
添加这个只是为了将传奇带出情节:
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
这就是我如何将图例移动到绘图内的特定位置并更改绘图的外观和大小的方式:
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)
Run Code Online (Sandbox Code Playgroud)
这对我来说可以更改情节的大小和外观,以及将图例移到情节区域之外。
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)
Run Code Online (Sandbox Code Playgroud)
我想通了这一点,从mwaskom的答案在这里和费尔南多·埃尔南德斯的答案在这里。
| 归档时间: |
|
| 查看次数: |
65851 次 |
| 最近记录: |