Beschriftungstext im Seaborn Factorplot drehen

Lesezeit: 4 Minuten

dans Benutzeravatar
Dan

Ich habe ein einfaches Faktordiagramm

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

Geben Sie hier die Bildbeschreibung ein

Das Problem ist, dass die x-Etiketten alle zusammen laufen und sie unlesbar machen. Wie drehen Sie den Text, damit die Beschriftungen lesbar sind?

  • import matplotlib.pylab as plt . plt.xticks(rotation=‌​45)

    – Raffaelvalle

    16. August 2016 um 16:20 Uhr


  • Das Dexplot-Bibliothek hat die Fähigkeit, Etiketten zu umbrechen, die Figurengröße und dpi festzulegen, ohne Matplotlib zu verwenden.

    – Ted Petrou

    12. Juni 2020 um 15:30 Uhr

Ich hatte ein Problem mit der Antwort von @mwaskorn, nämlich das

g.set_xticklabels(rotation=30)

schlägt fehl, da hierfür auch die Etiketten benötigt werden. Etwas einfacher als die Antwort von @Aman ist es, einfach hinzuzufügen

plt.xticks(rotation=45)

  • Sie können die Etiketten auch so erhalten g.set_xticklabels(g.get_xticklabels(), rotation=30). Weisen Sie es einer Variablen zu, wenn Sie die Ausgabe unterdrücken möchten.

    – joelostblom

    7. Februar 2016 um 3:43 Uhr

  • Ich denke, das ist richtig, bei der Einstellung plt.xtics hat bei mir funktioniert.

    – Muammar

    29. August 2018 um 18:56 Uhr

  • Wenn ich das versuche, sind meine xticklabels nicht mehr an den x-Ticks ausgerichtet. Weiß jemand warum?

    – Rylan Schäfer

    8. April 2021 um 22:37 Uhr

  • Ich empfehle, auch hinzuzufügen plt.tight_layout()sodass die Ränder an den Text angepasst werden

    – Ufos

    25. Oktober 2021 um 13:26 Uhr

  • g.set_xticklabels(rotation=30) arbeitet an FacetGrid jetzt

    – Ufos

    5. November 2021 um 17:08 Uhr

Benutzeravatar von mwaskom
mwaskom

Mit können Sie Teilstrichbeschriftungen drehen tick_params Methode auf matplotlib Axes Objekte. Um ein konkretes Beispiel zu geben:

ax.tick_params(axis="x", rotation=90)

  • Ich erhalte eine Fehlermeldung: IndexError: too many indices. Mein Code! g = sns.factorplot(“month_date”, “num_proposals”, “account”, sorted_data, col=”account”,col_wrap=3,sharex=False); g.set_xticklabels(rotation=30)

    – Yoshiserry

    9. Dezember 2014 um 2:29 Uhr


  • @soupault – das hat bei mir funktioniert, ähnlich wie du es dir ausgedacht hast, aber vielleicht etwas sauberer – für ax in g.axes.flatten(): ax.set_xticklabels(ax.get_xticklabels(),rotation=30)

    – odedbd

    7. Februar 2017 um 9:15 Uhr

  • Verwenden ha="right" X-Achsenbeschriftungen an ihren Teilstrichen zentriert auszurichten. dh g.set_xticklabels([label1, label2], rotation=30, ha='right')

    – Manavalan-Gajapathie

    2. September 2017 um 3:32 Uhr

  • Ähnlich wie bei ein paar Kommentaren oben gab mir dies einen Fehler, bis ich mich änderte g.set_xticklabels(rotation=30) zu g.set_xticklabels(g.get_xticklabels(), rotation=30) Dank dieser Antwort: stackoverflow.com/a/39689464/1870832

    – Maximale Kraft

    2. November 2017 um 17:51 Uhr

  • Einige Plotmethoden von Seaborn geben a zurück FacetGrid Objekt, einige geben eine Matplotlib zurück Axes Objekt. Für Ersteres funktioniert das Nicht-Setzen der Labels, für Letzteres nicht. Sie können sehen, welche sind FacetGrid Objekte, indem Sie sich die Dokumentation ansehen: seaborn.pydata.org/api.html . Wenn Sie zum Beispiel verwenden g = sns.catplot() das wird funktionieren, aber sns.barplot() wird nicht, weil es an zurückgibt Axes Objekt.

    – aufstehen8

    15. Mai 2019 um 6:58 Uhr


Dies ist immer noch ein Matplotlib-Objekt. Versuche dies:

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

Alle Seaborn-Plots, die von Facetgrid unterstützt werden, funktionieren nicht mit (z. B. Catplot)

g.set_xticklabels(rotation=30) 

barplot, countplot usw. funktionieren jedoch, da sie von facetgrid nicht unterstützt werden. Unten wird für sie arbeiten.

g.set_xticklabels(g.get_xticklabels(), rotation=30)

Falls Sie zwei Graphen übereinander gelegt haben, versuchen Sie set_xticklabels auf einem Graphen, der dies unterstützt.

Sie können auch verwenden plt.setp folgendermaßen:

import matplotlib.pyplot as plt
import seaborn as sns

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

um die Etiketten um 90 Grad zu drehen.

Benutzeravatar von user5875384
Benutzer5875384

Wenn sich jemand fragt, wie das für Clustermap CorrGrids geht (Teil eines gegebenen Seebeispiels):

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()

Benutzeravatar von serv-inc
serv-inc

Für ein seaborn.heatmapSie können diese mit drehen (basierend auf der Antwort von @Aman)

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

  • Das hat bei mir funktioniert, nur das Übergeben von Rotationsparametern hat nichts bewirkt, ich musste auch die Labels übergeben, damit dies funktioniert

    – Raveen Beemsingh

    3. Januar 2019 um 16:06 Uhr

1430520cookie-checkBeschriftungstext im Seaborn Factorplot drehen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy