Seaborn PairPlot вращает метки оси X. Ярлыки категориальных данных перекрываются - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать графики, которые показывают соотношение параметра «значение» с различными категориальными параметрами. Вот что у меня есть:

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

, который производит следующий набор графиков:

enter image description here

Как вы можете видеть, ось х чрезвычайно переполнена для участков "страна" и "промышленность". Я хотел бы повернуть метки категорий на 90 градусов, чтобы они не перекрывались.

Все примеры поворота, которые я мог найти, были для других типов графиков и не работали для парного графика. Я мог бы, вероятно, заставить его работать, если бы я делал каждый график отдельно, используя catplot, но я бы хотел сделать их все сразу. Это возможно?

Я использую Google Colab на случай, если это что-то изменит. Мой номер версии seaborn - 0.10.0.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Mani sh использует ответ get_xticklabels, который не всегда хорошо сочетается с морскими функциями более высокого уровня в моем опыте. Вот решение, позволяющее избежать этого. Поскольку у меня нет ваших данных, я использую набор данных tips от Seaborn для примера.

Я называю объект, возвращаемый 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)

sample plot with rotated x labels

0 голосов
/ 29 апреля 2020

Вы можете повернуть метки по оси 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()

Надеюсь, это поможет.

...