Wykresy liniowe i punktowe
Wizualizuj dane ciągłe za pomocą ax.plot(), a punkty dyskretne za pomocą ax.scatter(), kontrolując kolor, znacznik i styl linii.
Wykresy liniowe i punktowe to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Wykresy liniowe i punktowe: podstawowe typy wykresów
Wykresy liniowe łączą kolejne punkty danych linią i idealnie nadają się do przedstawiania trendów w czasie lub funkcji ciągłych. Wykresy punktowe przedstawiają pojedyncze punkty bez łączenia ich liniami, dzięki czemu doskonale nadają się do badania zależności między dwiema zmiennymi liczbowymi. Oba typy tworzy się na obiekcie Matplotlib Axes: ax.plot() służy do wykresów liniowych, a ax.scatter() do wykresów punktowych.
ax.plot() do wykresów liniowych
ax.plot(x, y) rysuje linię łączącą punkty danych w podanej kolejności. Przekaż wartości x jako pierwszy argument, a wartości y jako drugi. Oba argumenty mogą być listami Pythona, tablicami NumPy lub obiektami Series biblioteki Pandas. Gdy przekazany zostanie tylko jeden argument, Matplotlib automatycznie użyje indeksu (0, 1, 2, ...) jako osi x. Metoda zwraca listę obiektów Artist typu Line2D.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, y) # basic line plot
ax.set_title('Sine Wave')
ax.set_xlabel('x')
ax.set_ylabel('sin(x)')
# plt.show()
plt.close()Kontrolowanie stylu i koloru linii
Najczęściej używane argumenty słów kluczowych funkcji ax.plot() to: color (nazwa, wartość szesnastkowa lub krotka RGB), linewidth (lub lw), linestyle (lub ls): '-' linia ciągła, '--' linia przerywana, ':' linia kropkowana, '-.' linia złożona z kresek i kropek, marker (kształt w każdym punkcie danych) oraz markersize. Połącz linestyle i marker, aby jednocześnie pokazać linię i poszczególne punkty danych.
fig, ax = plt.subplots(figsize=(7, 4))
# Solid blue line with circle markers
ax.plot(x, np.sin(x), color='steelblue', lw=2, ls='-',
marker='o', markersize=4, label='sin(x)')
# Dashed red line
ax.plot(x, np.cos(x), color='crimson', lw=1.5, ls='--', label='cos(x)')
ax.legend()
plt.close()Rysowanie wielu linii
Wywołaj ax.plot() wielokrotnie, aby nałożyć kilka linii na ten sam obiekt Axes. Matplotlib automatycznie przechodzi przez domyślną paletę kolorów. Zawsze przekazuj argument słowa kluczowego label dla każdej linii, aby ax.legend() mogła automatycznie je opisać. Wywołanie funkcji tworzącej legendę umieść po wszystkich wywołaniach funkcji rysujących, aby uwzględnić wszystkie linie.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
dates = pd.date_range('2024-01', periods=12, freq='ME')
fig, ax = plt.subplots(figsize=(8, 4))
for product in ['A', 'B', 'C']:
sales = np.random.randint(50, 200, 12)
ax.plot(dates, sales, marker='o', label=f'Product {product}')
ax.set_title('Monthly Sales by Product')
ax.legend()
plt.close()Bezpośrednie rysowanie obiektów DataFrame biblioteki Pandas
Obiekty DataFrame biblioteki Pandas mają metodę .plot(), która bezpośrednio tworzy wykresy Matplotlib. Przekaż ax=ax, aby rysować na istniejącym obiekcie Axes. df.plot(ax=ax) rysuje wszystkie kolumny jako osobne linie, używając indeksu DataFrame jako osi x. Później nadal możesz stosować wszystkie dostosowania Matplotlib na obiekcie ax.
df = pd.DataFrame(
np.random.randn(12, 3),
index=pd.date_range('2024', periods=12, freq='ME'),
columns=['North', 'South', 'West']
).cumsum()
fig, ax = plt.subplots(figsize=(8, 4))
df.plot(ax=ax, linewidth=1.5)
ax.set_title('Cumulative Revenue by Region')
ax.set_ylabel('Revenue (cumulative)')
plt.close()ax.scatter() do wykresów punktowych
ax.scatter(x, y) rysuje pojedyncze punkty bez łączenia ich liniami. W przeciwieństwie do ax.plot(), scatter nie zakłada, że dane są uporządkowane. Najważniejsze parametry to: c (kolor, może być tablicą określającą kolor każdego punktu), s (rozmiar punktu, również może być tablicą), cmap (mapa kolorów używana, gdy c zawiera wartości liczbowe) oraz alpha (przezroczystość od 0 do 1, pomagająca obsłużyć nakładanie się punktów).
np.random.seed(42)
x = np.random.randn(100)
y = 2 * x + np.random.randn(100)
fig, ax = plt.subplots(figsize=(6, 5))
ax.scatter(x, y, color='steelblue', alpha=0.6, s=40)
ax.set_xlabel('Feature X')
ax.set_ylabel('Target Y')
ax.set_title('Feature vs Target')
plt.close()Kolorowanie punktów według kategorii
Przekaż tablicę liczbową do parametru c oraz mapę kolorów cmap, aby kolorować punkty według trzeciej zmiennej. Dodaj pasek kolorów za pomocą plt.colorbar(scatter_obj), aby zapewnić skalę. Gdy parametr s (rozmiar) również zależy od czwartej zmiennej, technika ta jest nazywana odmianą wykresu bąbelkowego.
categories = np.random.choice([0, 1, 2], size=100)
fig, ax = plt.subplots(figsize=(6, 5))
scatter = ax.scatter(x, y, c=categories, cmap='Set1',
alpha=0.7, s=60, edgecolors='none')
fig.colorbar(scatter, ax=ax, label='Category')
ax.set_title('Scatter Coloured by Category')
plt.close()Dodawanie linii trendu
Wykres punktowy z dopasowaną linią trendu przedstawia zarówno poszczególne punkty danych, jak i ogólny wzorzec. Użyj np.polyfit(x, y, 1), aby obliczyć dopasowanie liniowe, wyznacz jego wartości za pomocą np.poly1d(coeffs)(x_range), a następnie nałóż wynik na wykres punktowy za pomocą ax.plot(). Linia trendu powinna być cieńsza i mieć inny styl, aby odróżniała się od punktów danych.
fig, ax = plt.subplots(figsize=(6, 5))
ax.scatter(x, y, alpha=0.4, s=30, color='steelblue', label='Data')
# Fit and plot linear trend line
coeffs = np.polyfit(x, y, 1)
x_line = np.linspace(x.min(), x.max(), 100)
y_line = np.poly1d(coeffs)(x_line)
ax.plot(x_line, y_line, color='red', lw=2, label='Linear fit')
ax.legend()
ax.set_title('Scatter with Trend Line')
plt.close()Cieniowanie przedziałów ufności za pomocą fill_between
ax.fill_between(x, y_lower, y_upper) wypełnia obszar między dwiema krzywymi. Jest to często używane do przedstawiania przedziałów ufności wokół linii średniej, pasm odchylenia standardowego lub zakresów min./maks. Przekaż alpha, aby cieniowanie było półprzezroczyste i nie zasłaniało znajdujących się pod nim danych.
x_range = np.linspace(0, 2 * np.pi, 100)
mean = np.sin(x_range)
upper = mean + 0.2
lower = mean - 0.2
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_range, mean, color='steelblue', lw=2, label='Mean')
ax.fill_between(x_range, lower, upper,
color='steelblue', alpha=0.2, label='±0.2 band')
ax.legend()
ax.set_title('Line with Confidence Band')
plt.close()Zakresy osi i linie siatki
Kontroluj widoczny zakres za pomocą ax.set_xlim(min, max) i ax.set_ylim(min, max). Włącz linie siatki za pomocą ax.grid(True). Dostosuj siatkę argumentami słów kluczowych: linestyle, linewidth, alpha. Subtelna siatka z alpha=0.3 ułatwia odczytywanie dokładnych wartości bez zaśmiecania wykresu. Wywołaj ax.set_axisbelow(True), aby rysować siatkę za punktami danych.
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, np.sin(x), 'b-', lw=2)
ax.set_xlim(0, 2 * np.pi)
ax.set_ylim(-1.2, 1.2)
ax.grid(True, linestyle='--', alpha=0.5)
ax.set_axisbelow(True) # grid behind data
ax.set_title('Sine with Grid')
plt.close()Alpha i nakładanie się punktów
Gdy wiele punktów danych nakłada się w tym samym obszarze wykresu punktowego, poszczególne punkty stają się niewidoczne — zjawisko to nazywa się nakładaniem punktów. Najprostszym rozwiązaniem jest zmniejszenie krycia za pomocą alpha (0.0 = pełna przezroczystość, 1.0 = pełne krycie). Ustaw alpha=0.3 lub niższą wartość, aby gęste obszary były ciemniejsze (ponieważ nakłada się w nich wiele półprzezroczystych punktów), a rzadkie obszary pozostały jasne. W przypadku bardzo dużych zbiorów danych (miliony punktów) rozważ użycie hexbin lub estymacji gęstości jądrowej.
np.random.seed(1)
x_dense = np.random.randn(1000)
y_dense = np.random.randn(1000)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
# Without alpha: overplotting hides density
ax1.scatter(x_dense, y_dense, s=10)
ax1.set_title('No alpha (overplotted)')
# With alpha: density visible
ax2.scatter(x_dense, y_dense, s=10, alpha=0.2)
ax2.set_title('alpha=0.2 (density visible)')
plt.tight_layout()
plt.close()Szybki test
Sprawdź swoją znajomość wykresów liniowych i punktowych w Matplotlib z tego rozdziału.
Podsumowanie lekcji
W tej lekcji dowiedziałeś się, że: ax.plot() tworzy wykresy liniowe z pełną kontrolą nad kolorem, stylem linii i znacznikami; ax.scatter() tworzy wykresy punktowe z możliwością określania koloru i rozmiaru każdego punktu za pomocą c i s; ax.fill_between() dodaje pasma ufności; a ax.grid() dodaje linie siatki ułatwiające odczyt. Następnie utworzymy wykresy słupkowe i histogramy do wizualizacji danych kategorialnych oraz rozkładów.
Często zadawane pytania
Czy lekcja „Wykresy liniowe i punktowe” jest bezpłatna?
Tak — pełny tekst „Wykresy liniowe i punktowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wykresy liniowe i punktowe”?
Wizualizuj dane ciągłe za pomocą ax.plot(), a punkty dyskretne za pomocą ax.scatter(), kontrolując kolor, znacznik i styl linii. Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?
Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Wykresy liniowe i punktowe”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?
Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Architektura Figure i Axes
- Wykresy liniowe i punktowe
- Wykresy słupkowe i histogramy
- Etykiety, tytuły i zapisywanie wykresów