Ich versuche, ein Polarplot mit Seaborn des facetGrid ähnlich zu zeichnen, was auf seaborn's gallery ich den folgenden Code verwende detailliert beschrieben wird: die folgendenWie ändert man die Positionen von Subplot-Titeln und Achsenbeschriftungen in Seaborn FacetGrid?
sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1.25)
# Set up a grid of axes with a polar projection
g = sns.FacetGrid(df_total, col="Construct", hue="Run", col_wrap=5, subplot_kws=dict(projection='polar'), size=5, sharex=False, sharey=False, despine=False)
# Draw a scatterplot onto each axes in the grid
g.map(plt.plot, 'Rad', ''y axis label', marker=".", ms=3, ls='None').set_titles("{col_name}")
plt.savefig('./image.pdf')
die mit meinen Daten gibt:
Ich möchte diese Organisation von 5 Plots pro Linie halten.
Das Problem besteht darin, dass sich der Titel jedes Teilplots mit den Werten der Teilstriche überschneidet, wie bei der Beschriftung der y-Achse.
Gibt es eine Möglichkeit, dieses Verhalten zu verhindern? Kann ich die Titel leicht über ihre aktuelle Position verschieben und kann ich die Y-Achsenbeschriftungen leicht links von ihrer aktuellen Position verschieben?
Vielen Dank im Voraus!
EDIT: Dies ist kein Duplikat dieser SO wie das Problem war, dass der Titel eines subplot mit der Achsenbeschriftung überlappt eine andere subplot.
Hier mein Problem ist, dass der Titel eines subplot mit dem Zecken-Label von überlappt den gleich subplot und in ähnlicher Weise der Achsenbeschriftung überlappt mit dem Zecken-Label von der gleich subplot.
Ich möchte auch hinzufügen, dass ich, dass sie auf meinem jupyter Notebook nicht überlappen kümmern (wie es wie es erstellt wurde), aber ich will das letzte gespeicherte Bild ohne Überlappung, so vielleicht gibt es etwas, Ich muss tun, um das Bild in einem etwas anderen Format zu speichern, um das zu vermeiden, aber ich weiß nicht was (ich verwende nur plt.savefig
, um es zu speichern).
EDIT 2: Wenn jemand das Problem hier reproduzieren möchte, ist ein minimales Beispiel:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
sns.set()
sns.set(context='notebook', style='darkgrid', palette='deep', font='sans-serif', font_scale=1.5)
# Generate an example radial datast
r = np.linspace(0, 10000, num=100)
df = pd.DataFrame({'label': r, 'slow': r, 'medium-slow': 1 * r, 'medium': 2 * r, 'medium-fast': 3 * r, 'fast': 4 * r})
# Convert the dataframe to long-form or "tidy" format
df = pd.melt(df, id_vars=['label'], var_name='speed', value_name='theta')
# Set up a grid of axes with a polar projection
g = sns.FacetGrid(df, col="speed", hue="speed",
subplot_kws=dict(projection='polar'), size=4.5, col_wrap=5,
sharex=False, sharey=False, despine=False)
# Draw a scatterplot onto each axes in the grid
g.map(plt.scatter, "theta", "label")
plt.savefig('./image.png')
plt.show()
Welche folgende Bild gibt, in denen die Titel sind nicht so schlimm wie in meinem ursprünglichen Problem (aber immer noch etwas überlappen) und die Beschriftung auf der linken Seite überlappen vollständig.
Können Sie eine [MCVE] des Problems? – ImportanceOfBeingErnest
Bearbeiten Sie die Frage, um ein Beispiel hinzuzufügen. Vielen Dank. – ejl62