FacetGrid更改x轴标签

14
我就是想不通如何更改 Seaborn FacetGrid 中的 xlabels。它提供了一种使用 set_xlabels() 更改 x 标签的方法,但不幸的是不能针对每个子图进行单独更改。
我有两个共享 y 轴但具有不同 x 轴的子图,并且我想用不同的文本对它们进行标记。

根据seaborn.FacetGrid的文档说明,最好直接使用图级别函数,例如g = sns.relplot(data=tips, kind='scatter', ...),而不是使用sns.FacetGrid。这些答案仍然适用。 - Trenton McKinney
2个回答

38
您可以使用axes属性访问FacetGrid的各个轴,然后在每个轴上使用set_xlabel()。例如:
import seaborn as sns
import matplotlib.pyplot as plt

sns.set(style="ticks", color_codes=True)

tips = sns.load_dataset("tips")

g = sns.FacetGrid(tips, col="time",  hue="smoker")
g = g.map(plt.scatter, "total_bill", "tip", edgecolor="w")

g.axes[0,0].set_xlabel('axes label 1')
g.axes[0,1].set_xlabel('axes label 2')

plt.show()

enter image description here

在这个例子中,g.axes 的形状为(1,2)(一行两列)。

非常感谢您的帮助。运行得非常完美。我想我需要更仔细地研究一下matplotlib。 - J-H
4
我可以为两个图表设置一个标签中心吗? - theantomc
1
我的意思是一次性完成,而不是将所有的g.axes[n,n]都赋为空值。 - theantomc

0

如果要一次设置所有轴,请使用以下代码:

g.set_axis_labels("Total bill ($)")

1
问题是关于每个子图的单独轴标签,因此您的答案不起作用(当我阅读问题时也犯了同样的错误)。 - Dr. Manuel Kuehner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接