如何在海运猫图中旋转xtick标签
问题描述
我无法在Seborn/Matplotlib中旋转我的扩展标签。我尝试了许多不同的解决方案,但都不能解决它。我在堆栈溢出上看到了许多相关问题,但它们对我不起作用。
我当前的绘图如下所示,但是我希望xlabels旋转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)
但这不能生成情节。你知道我怎么才能修复它吗?
解决方案
- 根据文档,为
sns.catplot
设置xticklabels的正确方式是使用.set_xticklabels
方法(例如g.set_xticklabels(rotation=30)
)。 - 如果需要在
FacetGrid
内逐个绘图进行更改,则应使用循环循环遍历Axes
。 - Building structured multi-plot grids
seaborn.FacetGrid
g
或者在OP的情况下,ax
是seaborn.axisgrid.FacetGrid
- 在迭代
ax.axes.flat
时,axes
是一个<class 'matplotlib.axes._subplots.AxesSubplot'>
,它有很多类方法,包括.get_xticklabels()
。
- 在迭代
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)
- 使用
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'
相关文章