Spredningsdiagrammer og parvise diagrammer
Opprett spredningsdiagrammer farget etter en tredje variabel med sns.scatterplot, og visualiser alle parvise sammenhenger med sns.pairplot.
Spredningsdiagrammer og parvise diagrammer er en gratis leksjon i Pandas & NumPy Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Pandas & NumPy Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.
Visualisere forhold mellom variabler
Fordelingsplott viser én variabel om gangen. Når De vil forstå forholdet mellom to numeriske variabler, trenger De punktdiagrammer og relaterte visualiseringer. Disse hjelper Dem med å oppdage korrelasjon (øker begge variablene sammen?), klynger (finnes det undergrupper i dataene?) og uteliggere (finnes det uvanlige punkter langt fra hovedklyngen?). Seaborn gjør alt dette enkelt med scatterplot og pairplot.
import seaborn as sns
import matplotlib.pyplot as plt
# Load the classic iris dataset
iris = sns.load_dataset('iris')
print(iris.head())
print('\nShape:', iris.shape)Grunnleggende punktdiagram med sns.scatterplot
sns.scatterplot(data, x, y) plotter hver observasjon som et punkt ved punktets (x, y)-koordinater. I motsetning til Matplotlibs plt.scatter knytter Seaborns versjon seg automatisk til en DataFrame og integreres med semantikkene hue, size og style. Resultatet er informative flervariable plott med ett enkelt funksjonskall og en automatisk forklaring.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.scatterplot(data=tips, x='total_bill', y='tip')
plt.title('Tip vs Total Bill')
plt.xlabel('Total Bill ($)')
plt.ylabel('Tip ($)')
plt.show()Kode en tredje variabel med hue
Parameteren hue tilordner hvert punkt en farge basert på en tredje variabel – enten kategorisk eller numerisk. Når hue er en kategorisk kolonne (som 'smoker'), bruker Seaborn ulike farger. Når hue er en numerisk kolonne, bruker den en sekvensiell fargeskala. Dermed kan De se tre variabler samtidig i et 2D-plott uten å legge til en tredje akse.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.scatterplot(
data=tips,
x='total_bill',
y='tip',
hue='time', # Lunch vs Dinner
style='smoker', # marker shape
palette='deep'
)
plt.title('Tip vs Bill by Time and Smoker Status')
plt.legend(bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()Kode størrelse og stil
I tillegg til hue støtter Seaborns punktdiagrammer size (punktarealet koder en numerisk variabel) og style (markørformen koder en kategorisk variabel). Bruk av alle tre semantikkene samtidig kan avdekke komplekse flervariable mønstre, men kan også overbelaste leseren. En praktisk tommelfingerregel er å bruke hue først (mest fremtredende), style som nummer to og size bare når det er nødvendig.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.scatterplot(
data=tips,
x='total_bill',
y='tip',
hue='day',
size='size', # party size controls marker area
sizes=(20, 200), # min and max dot area
alpha=0.7
)
plt.title('Tip vs Bill — Colour=Day, Size=Party Size')
plt.legend(bbox_to_anchor=(1, 1))
plt.tight_layout()
plt.show()Legge til en regresjonslinje med regplot
sns.regplot() tegner et punktdiagram og legger oppå en lineær regresjonslinje med et skyggelagt 95 % konfidensbånd. Dette er nyttig for å visualisere styrken og retningen på det lineære forholdet mellom to variabler. Konfidensbåndet blir smalere i områder med mange data og bredere i kantene, der færre punkter bidrar til tilpasningen.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.regplot(
data=tips,
x='total_bill',
y='tip',
scatter_kws={'alpha': 0.4},
line_kws={'color': 'red'}
)
plt.title('Tip vs Bill with Regression Line')
plt.show()lmplot: fasetterte regresjonsplott
sns.lmplot() er versjonen av regplot på figurnivå. Den støtter hue (separate regresjonslinjer per gruppe i samme panel) og col/row (separate paneler). Dette er effektivt for å undersøke om forholdet mellom to variabler varierer på tvers av undergrupper – for eksempel om forholdet mellom regning og tips er brattere for middag enn for lunsj.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# Separate regression line per time (Lunch / Dinner)
sns.lmplot(
data=tips,
x='total_bill',
y='tip',
hue='time',
scatter_kws={'alpha': 0.4},
height=5
)
plt.suptitle('Regression by Meal Time', y=1.02)
plt.show()Introduksjon til parplott
sns.pairplot(df) oppretter et rutenett med punktdiagrammer for hvert par av numeriske kolonner i DataFrame-en, med fordelingsplott på diagonalen. Dette er den raskeste måten å visualisere alle parvise forhold i et datasett på i ett enkelt kall. For en DataFrame med n numeriske kolonner oppretter pairplot et n×n-rutenett. Det er mest praktisk når n er mellom 3 og 8 – større rutenett blir for små til å leses.
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
# Create pairplot coloured by species
sns.pairplot(iris, hue='species', diag_kind='kde', plot_kws={'alpha': 0.5})
plt.suptitle('Iris Dataset Pairplot', y=1.02)
plt.show()Tilpasse diagonalen i pairplot
Parameteren diag_kind styrer hva som vises på diagonalen i pairplot-rutenettet. Bruk 'hist' for histogrammer eller 'kde' for kjernetetthetsestimater. Diagonalen viser den univariate fordelingen til hver variabel, mens panelene utenfor diagonalen viser parvise punktdiagrammer. De kan også bruke corner=True for å vise bare den nedre trekanten, halvere antallet paneler og redusere redundans.
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
# Show only lower triangle
sns.pairplot(
iris,
hue='species',
diag_kind='hist',
corner=True
)
plt.show()PairGrid for full tilpasning
sns.PairGrid gir Dem full kontroll over hvilken plottetype som vises i hver del av matrisen. Bruk g.map_upper(), g.map_lower() og g.map_diag() for å tilordne ulike funksjoner (som regplot i den øvre trekanten og kdeplot i den nedre). Dette gir plott med publiseringskvalitet, der hvert panel formidler særskilt informasjon om variabelparet.
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
numeric_iris = iris.drop(columns=['species'])
g = sns.PairGrid(numeric_iris)
g.map_upper(sns.scatterplot, alpha=0.3)
g.map_lower(sns.kdeplot, fill=True)
g.map_diag(sns.histplot, kde=True)
plt.suptitle('Custom PairGrid', y=1.02)
plt.show()Identifisere korrelasjon i punktdiagrammer
Når De leser et spredningsdiagram, bør De anslå retningen (heller punktmengden oppover eller nedover?), styrken (hvor tett ligger punktene rundt trenden?) og formen (lineær eller buet?) til sammenhengen. Korrelasjonskoeffisienten r varierer fra -1 (perfekt negativ) til +1 (perfekt positiv), der 0 betyr at det ikke finnes noen lineær sammenheng. Husk: korrelasjon er ikke det samme som årsakssammenheng, og en ikke-lineær sammenheng kan ha r ≈ 0.
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
x = np.linspace(0, 10, 100)
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
# Strong positive correlation
axes[0].scatter(x, x + np.random.normal(0, 0.5, 100))
axes[0].set_title('Strong Positive (r≈0.99)')
# Weak correlation
axes[1].scatter(x, np.random.normal(5, 3, 100))
axes[1].set_title('No Correlation (r≈0)')
# Non-linear (quadratic) — r can be low
axes[2].scatter(x, (x-5)**2 + np.random.normal(0, 1, 100))
axes[2].set_title('Non-linear (r low despite pattern)')
plt.tight_layout()
plt.show()jointplot for bivariat data med marginalfordelinger
sns.jointplot() kombinerer et sentralt bivariat diagram med marginale univariate diagrammer øverst og langs høyre kant. Angi kind='scatter', 'hex', 'kde' eller 'reg'. Varianten hex er nyttig når De har tusenvis av overlappende punkter – den grupperer dem i sekskanter og bruker farge til å vise tetthet. Dermed løses problemet med overlappende punkter, som gjør spredningsdiagrammer uleselige for store datasett.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# KDE joint plot with marginal distributions
sns.jointplot(
data=tips,
x='total_bill',
y='tip',
kind='reg',
marginal_kws={'bins': 20}
)
plt.suptitle('Joint Distribution of Bill and Tip', y=1.02)
plt.show()Kort kontroll
Test forståelsen Deres av Seaborn-spredningsdiagrammer og parvise diagrammer fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen lærte De at sns.scatterplot kan kode opptil fire variabler ved hjelp av x, y, hue, size og style, at sns.regplot/lmplot legger en regresjonslinje oppå diagrammet for å kvantifisere lineære sammenhenger, og at sns.pairplot lager et rutenett med alle par, noe som er ideelt for utforskende analyse av datasett med flere variabler. Deretter skal vi se på varmekart for visualisering av korrelasjonsmatriser.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Spredningsdiagrammer og parvise diagrammer» gratis?
Ja – hele teksten i «Spredningsdiagrammer og parvise diagrammer» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Pandas & NumPy Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Spredningsdiagrammer og parvise diagrammer»?
Opprett spredningsdiagrammer farget etter en tredje variabel med sns.scatterplot, og visualiser alle parvise sammenhenger med sns.pairplot. Du øver på Pandas & NumPy Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Pandas & NumPy Academy?
Ingen tidligere erfaring er nødvendig. Pandas & NumPy Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Spredningsdiagrammer og parvise diagrammer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Pandas & NumPy Academy-leksjonen?
Ja. Alle Pandas & NumPy Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Fordelingsdiagrammer: histplot og kdeplot
- Kategoriske diagrammer: boxplot, barplot, violinplot
- Spredningsdiagrammer og parvise diagrammer
- Varmekart for korrelasjonsmatriser