为何Seaborn displot用set方法无法旋转X轴刻度标签,set_xticklabels却可行?
问题解答
为什么g.set(xticklabels=[rotation=45])无法旋转刻度标签?
Seaborn的displot返回的是FacetGrid对象,它的set()方法里,xticklabels参数的作用是替换X轴刻度的文本内容(比如传入['标签1', '标签2']这类文本列表),根本不是用来设置旋转角度的样式属性。你写的[rotation=45]既不是合法的文本列表,也不符合该参数的设计意图,所以完全起不到旋转效果。
能不能通过set()方法实现标签旋转?
可以,FacetGrid.set()方法提供了专门的xticklabel_rotation参数来控制X轴刻度标签的旋转角度,直接传入角度值即可:
import seaborn as sns g = sns.displot(data=my_data, x='my_column') # 通过set方法旋转标签 g.set(xticklabel_rotation=45)
这个写法和g.set_xticklabels(rotation=45)的效果完全一致。
额外说明:set_xticklabels()方法之所以能生效,是因为它直接封装了Matplotlib的对应接口,其中rotation是该方法专门用于控制旋转的参数;而set()方法的参数设计是把内容设置和样式设置分开,样式类的参数会带有明确的用途命名(比如xticklabel_rotation、yticklabel_rotation)。
内容的提问来源于stack exchange,提问作者Jiani Song
相关产品推荐
相关产品推荐

