Поворот текста метки в Seaborn factorplot
У меня есть простой факторплот
import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2,
linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])

проблема в том, что все метки x работают вместе, что делает их нечитабельными. Как вы поворачиваете текст так, чтобы надписи были читаемы?
6 ответов:
Aman правильно, что вы можете использовать обычные команды 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)
есть некоторые комментарии и другой ответ, утверждающий, что это "не работает", однако, любой может запустить код, как написано здесь, и посмотреть, что он работает. Другой ответ не дает воспроизводимого примера того, что не работает, что делает его очень трудным для решения, но я предполагаю, что люди пытаются применить это решение для вывода функций, которые возвращают an
Axesобъект вместоFacet Grid. Это разные вещи, иAxes.set_xticklabels()метод действительно требует список меток и не может просто изменить свойства существующих меток наAxes. Урок заключается в том, что важно обращать внимание на то, с какими объектами вы работаете.
у меня была проблема с ответом @mwaskorn, а именно что
g.set_xticklabels(rotation=30)не удается, потому что для этого также требуются метки. Немного проще, чем ответ @Aman, просто добавить
plt.xticks(rotation=45)
Это все еще объект matplotlib. Попробуйте это:
# <your code here> locs, labels = plt.xticks() plt.setp(labels, rotation=45)
Если кто-то задается вопросом, как это сделать для clustermap CorrGrids (часть данного примера seaborn):
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()
на
seaborn.heatmap, вы можете вращать их с помощью (на основе @Амана)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
что сработало для меня:
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)

Comments