如何在海运猫图中旋转xtick标签

2022-02-27 00:00:00 python matplotlib seaborn

问题描述

我无法在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的情况下,axseaborn.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'

相关文章