2015-04-14 9 views
18

Zastanawiam się, czy istnieje sposób, aby wyłączyć liniowe dopasowanie w seaborn's lmplot lub jeśli istnieje odpowiednik funkcji, która po prostu produkuje wykres rozrzutu. Oczywiście, mógłbym również użyć matplotlib, jednak uważam, że składnia i estetyka u seaborn są całkiem atrakcyjne. Na przykład,. Chcę wykreślić następujący działceScatterplot bez liniowego dopasowania w seaborn

import seaborn as sns 
sns.set(style="ticks") 

df = sns.load_dataset("anscombe") 
sns.lmplot("x", "y", data=df, hue='dataset') 

enter image description here

Bez liniowego dopasowania tak:

from itertools import cycle 
import numpy as np 

import matplotlib.pyplot as plt 

color_gen = cycle(('blue', 'lightgreen', 'red', 'purple', 'gray', 'cyan')) 

for lab in np.unique(df['dataset']): 
    plt.scatter(df.loc[df['dataset'] == lab, 'x'], 
       df.loc[df['dataset'] == lab, 'y'], 
       c=next(color_gen), 
       label=lab) 

plt.legend(loc='best') 

enter image description here

+2

Kilka podejść do stylów pand i seaborn [tutaj] (http://stackoverflow.com/questions/22543208/ggplot-styles-in-python) - możesz użyć seaborn plotowania jako kontekstu podczas pracy w matplotlib, na przykład . – cphlewis

+0

Widziałem twojego przedstawiciela w 6999, więc nie mogłem pomóc, ale głosowałem na twoje pytanie;) – derchambers

+0

Haha, oprócz tego, mam nadzieję, że pytania i odpowiedzi były również pomocne. Przypomina mi, że planowałem być nieco bardziej aktywny w 2018 roku :) – Sebastian

Odpowiedz

37

ustawić fit_reg argument False:

sns.lmplot("x", "y", data=df, hue='dataset', fit_reg=False) 
+0

Dzięki, jakoś tylko spojrzałem na parametry 'lplplot' i nie wiedziałem, że to było wywołanie' regplot'. Problem rozwiązany :) – Sebastian

Powiązane problemy