【问题标题】:Seaborn PairPlot rotate x axis labels. Categorical data labels are overlappingSeaborn PairPlot 旋转 x 轴标签。分类数据标签重叠
【发布时间】:2020-04-25 12:29:02
【问题描述】:

我正在尝试创建显示“值”参数与不同分类参数的相关性的图。到目前为止,这是我所拥有的:

plot = sns.pairplot(df, x_vars=['country', 'tier_code', 'industry', 'company_size', 'region'], y_vars=['value'], height=10)

这会产生以下一组图:

如您所见,“国家”和“行业”图的 x 轴非常拥挤。我想将类别标签旋转 90 度,这样它们就不会重叠。

我能找到的所有旋转示例都适用于其他类型的图,不适用于配对图。如果我使用 catplot 分别制作每个图,我可能可以让它工作,但我想一次制作它们。这可能吗?

我正在使用 Google Colab,以防万一。我的 seaborn 版本号是 0.10.0。

【问题讨论】:

    标签: python data-visualization seaborn google-colaboratory


    【解决方案1】:

    Manish 的回答使用了get_xticklabels 方法,根据我的经验,这种方法并不总是能很好地与更高级别的 seaborn 函数配合使用。所以这是一个避免这种情况的解决方案。由于我没有您的数据,因此我使用 seaborn 的 tips 数据集作为示例。

    我将sns.pairplot() 返回的对象命名为grid,只是为了提醒我们这是一个PairGrid 实例。一般来说,它的axes 属性产生一个二维坐标轴对象数组,对应于子图网格。所以我使用flat 方法将其转换为一维数组,尽管在只有一行子图的特殊情况下没有必要。

    在我的示例中,我不想旋转第三个子图的标签,因为它们是个位数,因此我使用 [:2] 相应地对轴数组进行切片。

    import seaborn as sns
    sns.set()
    
    tips = sns.load_dataset("tips")
    
    grid = sns.pairplot(tips, x_vars=['sex', 'day', 'size'], y_vars=['tip']) 
    
    for ax in grid.axes.flat[:2]:
        ax.tick_params(axis='x', labelrotation=90)
    

    【讨论】:

      【解决方案2】:

      您可以将 x 轴标签旋转为:

      plot = sns.pairplot(df, x_vars=['country', 'tier_code', 'industry', 'company_size', 'region'], 
                           y_vars=['value'], height=10)
      
      rotation = 90
      for axis in plot.fig.axes:   # get all the axis
           axis.set_xticklabels(axis.get_xticklabels(), rotation = rotation)
      
      plot.fig.show()
      

      希望对你有帮助。

      【讨论】:

      • 我不确定gg.fig.show() 中应该是什么。我认为它应该是plot.fig.show()。在任何情况下,即使没有那条线,也会显示 pairgrid。但是,分类数据变成了数值数据,这不适合我的目的。 (而不是 region-us-east 我得到 1.0)
      猜你喜欢
      • 1970-01-01
      • 2019-08-25
      • 2020-08-05
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      相关资源
      最近更新 更多