【问题标题】:How to rotate x-axis tick lables in Seaborn scatterplot using subplots如何使用子图在 Seaborn 散点图中旋转 x 轴刻度标签
【发布时间】:2021-03-19 09:00:45
【问题描述】:

如何在使用子图绘制的 Seaborn 散点图中旋转 x 轴刻度标签?

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import gridspec
import seaborn as sns
sns.set_context("talk", font_scale=1.4) 
  
df = pd.DataFrame({'id': ['aaaaaaa','bbbbbb1','bbbbbb2','ccccc','dddddd','eeeee'],
                   'y': [7,2,5,8,3,7],
                   'cat': ['X','Y','Y','X','Z','X']
                  })
display(df)

fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True, figsize=(8,4),
                               gridspec_kw=dict(width_ratios=[2, 1]),
                              )

g1 = sns.scatterplot(data=df,
                    x='id', y='y', hue='cat',
                    s=200, ax=ax1, legend=False,
                   )

g2 = sns.histplot(data=df, y='y', 
                  hue='cat', ax=ax2, binwidth=2, 
                  multiple='stack', legend=False,
                 )

我尝试了以下方法但没有成功:

  1. g1.xticks(rotation = 90)ax1.xticks(rotation = 90) 都返回
    AttributeError: 'AxesSubplot' object has no attribute 'xticks'
  2. g1.set_xticklabels(g1.get_xticklabels(), rotation = 90) 基于问题 here,但这会删除所有刻度标签

【问题讨论】:

    标签: python seaborn axes


    【解决方案1】:

    由于某种原因,标签似乎在 Seaborn-Matplotlib ether 中丢失了。

    labels = [item.get_text() for item in g1.get_xticklabels()]
    print(labels)
    

    返回空白列表:['', '', '', '', '', '']

    所以我必须重新制作标签:g1.set_xticklabels(df['id'].tolist(), rotation = 90)

    并确认它有效:

    labels2 = [item.get_text() for item in g1.get_xticklabels()]
    print(labels2)
    >>['aaaaaaa', 'bbbbbb1', 'bbbbbb2', 'ccccc', 'dddddd', 'eeeee']
    

    【讨论】:

      猜你喜欢
      • 2020-08-05
      • 1970-01-01
      • 2015-11-21
      • 2019-10-29
      • 2021-06-01
      • 2017-07-10
      • 2021-10-06
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多