Ich verwende Seaborns lmplot, um eine lineare Regression zu zeichnen, und teile meinen Datensatz in zwei Gruppen mit einer kategorialen Variablen auf.
Sowohl für x als auch für y möchte ich die Untergrenze für beide Diagramme manuell festlegen , aber die Obergrenze bei der Seaborn-Standardeinstellung belassen. Hier ist ein einfaches Beispiel:
import pandas as pd
import seaborn as sns
import random
n = 200
random.seed(2014)
base_x = [random.random() for i in range(n)]
base_y = [2*i for i in base_x]
errors = [random.uniform(0,1) for i in range(n)]
y = [i+j for i,j in zip(base_y,errors)]
df = pd.DataFrame({'X': base_x,
'Y': y,
'Z': ['A','B']*(n/2)})
mask_for_b = df.Z == 'B'
df.loc[mask_for_b,['X','Y']] = df.loc[mask_for_b,] *2
sns.lmplot('X','Y',df,col='Z',sharex=False,sharey=False)
Dies gibt Folgendes aus:
In diesem Beispiel möchte ich jedoch, dass xlim und ylim (0, *) sind. Ich habe versucht, sns.plt.ylim und sns.plt.xlim zu verwenden, aber diese wirken sich nur auf die Darstellung auf der rechten Seite aus. Beispiel:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
Wie kann ich für jedes Diagramm im FacetGrid auf xlim und ylim zugreifen?
numpy.random
Modul vertraut machen , können Sie sich viel Zeit sparen, indem Sie zufällige Daten generieren (was sehr nützlich sein kann!). Zum Beispiel könnten Sie bekommenbase_x
undbase_y
mitbase_x = np.random.rand(n); base_y = base_x * 2
. Diey
Variable kann dann auf ähnliche Weise mit vektorisierten Operationen erzeugt werden.