Подтвердить что ты не робот

Поверните текст ярлыка в морском футляре

У меня есть простой факторный план

import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, 
    linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])

enter image description here

Проблема заключается в том, что все ярлыки x работают вместе, что делает их нечитаемыми. Как вы поворачиваете текст так, чтобы метки были доступны для чтения?

4b9b3361

Ответ 1

Аман прав, что вы можете использовать обычные команды matplotlib, но это также встроено в FacetGrid:

import seaborn as sns
planets = sns.load_dataset("planets")
g = sns.factorplot("year", data=planets, aspect=1.5, kind="count", color="b")
g.set_xticklabels(rotation=30)

enter image description here

Есть некоторые комментарии и другой ответ, утверждающий, что это "не работает", однако любой может запустить код, как написано здесь, и увидеть, что он работает. Другой ответ не дает воспроизводимого примера того, что не работает, что делает его очень трудным для решения, но я предполагаю, что люди пытаются применить это решение к выводу функций, которые возвращают объект Axes вместо Facet Grid, Это разные вещи, и метод Axes.set_xticklabels() действительно требует список меток и не может просто изменить свойства существующих меток на Axes. Урок в том, что важно обращать внимание на то, с какими объектами вы работаете.

Ответ 2

У меня возникла проблема с ответом @mwaskorn, а именно:

g.set_xticklabels(rotation=30)

не удается, поскольку для этого также требуются метки. Немного легче, чем ответ by @Aman - просто добавить

plt.xticks(rotation=45)

Ответ 3

Это объект matplotlib. Попробуйте следующее:

# <your code here>
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)

Ответ 4

Если кто-то задается вопросом, как это сделать для кластерной карты CorrGrids (часть данного примера на море):

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(context="paper", font="monospace")

# Load the datset of correlations between cortical brain networks
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
corrmat = df.corr()

# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(12, 9))

# Draw the heatmap using seaborn
g=sns.clustermap(corrmat, vmax=.8, square=True)
rotation = 90 
for i, ax in enumerate(g.fig.axes):   ## getting all axes of the fig object
     ax.set_xticklabels(ax.get_xticklabels(), rotation = rotation)


g.fig.show()

Ответ 5

Для seaborn.heatmap вы можете повернуть их используя (на основе @Aman answer)

pandas_frame = pd.DataFrame(data, index=names, columns=names)
heatmap = seaborn.heatmap(pandas_frame)
loc, labels = plt.xticks()
heatmap.set_xticklabels(labels, rotation=45)
heatmap.set_yticklabels(labels[::-1], rotation=45) # reversed order for y

Ответ 6

Что сработало для меня:

planets = sns.load_dataset("planets")
g = sns.factorplot("year", data=planets, aspect=1.5,kind="count", color="b")
g.set_xticklabels(labels = planets["year"].value_counts().index.tolist(),rotation=30)

Ответ 7

Вы также можете использовать plt.setp следующим образом:

import matplotlib.pyplot as plt
import seaborn as sns

plot=sns.barplot(data=df,  x=" ", y=" ")
plt.setp(plot.get_xticklabels(), rotation=90)

повернуть метки на 90 градусов.