我无法在 Seaborn/Matplotlib 中旋转我的 xlabel。我尝试了很多不同的解决方案,但无法修复它。我在 stackoverflow 上看到了很多相关问题,但它们对我不起作用。
我当前的绘图如下所示,但我希望 xlabel 旋转 90 度。
@staticmethod
def plotPrestasjon(plot):
sns.set(style="darkgrid")
ax = sns.catplot(x="COURSE", y="FINISH", hue="COURSE",
col="BIB#", data=plot, s=9, palette="Set2")
ax.set(xlabel='COURSES', ylabel='FINISH (sec)')
plt.show()
我努力了:
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
但这无法生成情节。我有什么想法可以解决它吗?
-
设置 xticklabels 的正确方法sns.catplot https://seaborn.pydata.org/generated/seaborn.catplot.html,根据文档,是与.set_xticklabels
方法(例如g.set_xticklabels(rotation=30)
).
-
使用循环来迭代Axes
,如果需要在逐个绘图的基础上进行更改,则应使用FacetGrid
.
-
构建结构化多图网格 https://seaborn.pydata.org/tutorial/axis_grids.html
-
seaborn.FacetGrid https://seaborn.pydata.org/generated/seaborn.FacetGrid.html
-
g
,或者在 OP 的情况下,ax
is a seaborn.axisgrid.FacetGrid
- 当迭代通过
ax.axes.flat
, axes
is a <class 'matplotlib.axes._subplots.AxesSubplot'>
,它具有广泛的类方法,包括.get_xticklabels()
.
-
如果有很多列,并且col_wrap=
用来,g.set_xticklabels(rotation=30)
可能会导致删除所有 xticklabel。
- 反而,
labels=
必须指定,g.set_xticklabels(g.axes.flat[-1].get_xticklabels(), rotation=30)
, where g.axes.flat[-1]
应该是带有 xticklabels 的最后一个面轴。
-
测试于python 3.11.3
, matplotlib 3.7.1
, seaborn 0.12.2
import seaborn as sns
# load data
exercise = sns.load_dataset("exercise")
# plot catplot
g = sns.catplot(x="time", y="pulse", hue="kind", col="diet", data=exercise)
# set rotation
g.set_xticklabels(rotation=30)
- Using
g.set_xticklabels(g.get_xticklabels(), rotation=30)
结果是AttributeError
.
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-442-d1d39d8cc4f0> in <module>
1 g = sns.catplot(x="time", y="pulse", hue="kind", col="diet", data=exercise)
----> 2 g.set_xticklabels(g.get_xticklabels(), rotation=30)
AttributeError: 'FacetGrid' object has no attribute 'get_xticklabels'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)