import matplotlib.pyplot as plt
= [0, 7, 4, 5,8,-9]
x
plt.plot(x) plt.show()
Biblioteka - Matplotlib
Matplotlib
Import
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Galerie wykresów
https://matplotlib.org/gallery/index.html
https://python-graph-gallery.com/
Wykres liniowy
Wykres liniowy jest stosowany, gdy chcemy przedstawić zmiany wartości w czasie lub w funkcji innej zmiennej. Wykres liniowy jest odpowiedni dla danych ciągłych, gdzie istnieje związek między punktami danych. Służy do ilustrowania trendów, wzorców i porównywania między różnymi zestawami danych.
Oto niektóre sytuacje, w których wykresy liniowe są stosowane:
- Prezentowanie zmian wartości w czasie, na przykład wzrostu gospodarczego, ceny akcji, zmiany temperatury itp.
- Ukazywanie związku między dwiema zmiennymi, np. związek między poziomem edukacji a zarobkami.
- Porównywanie trendów dla różnych grup lub kategorii, na przykład analiza sprzedaży różnych produktów w czasie.
- Analiza korelacji między zmiennymi, na przykład związek między rosnącymi cenami paliwa a spadkiem sprzedaży samochodów.
- Eksploracja danych, aby zrozumieć strukturę danych i znaleźć wzorce lub anomalie.
Wykresy liniowe są szczególnie przydatne, gdy mamy do czynienia z danymi ciągłymi, a relacje między punktami danych są istotne. Jednak mogą być również używane do prezentowania danych dyskretnych, o ile istnieje zrozumiały związek między punktami danych.
import matplotlib.pyplot as plt
import numpy as np
1= np.linspace(0, 2, 100)
x 2='linear')
plt.plot(x, x, label3**2, label='quadratic')
plt.plot(x, x4**3, label='cubic')
plt.plot(x, x5'x label')
plt.xlabel(6'y label')
plt.ylabel(7"Simple Plot")
plt.title(8
plt.legend()9 plt.show()
- 1
-
x = np.linspace(0, 2, 100)
: tworzy tablicęx
z 100 równomiernie rozłożonymi wartościami od 0 do 2 (włącznie), korzystając z funkcjilinspace
z bibliotekinumpy
. - 2
-
plt.plot(x, x, label='linear')
: rysuje liniowy wykres (y = x) z wartościami z tablicyx
. - 3
-
plt.plot(x, x**2, label='quadratic')
: rysuje wykres kwadratowy (y = x^2) z wartościami z tablicyx
. - 4
-
plt.plot(x, x**3, label='cubic')
: rysuje wykres sześcienny (y = x^3) z wartościami z tablicyx
. - 5
-
plt.xlabel('x label')
: dodaje etykietę osi X. - 6
-
plt.ylabel('y label')
: dodaje etykietę osi Y. - 7
-
plt.title("Simple Plot")
: nadaje tytuł wykresu “Simple Plot”. - 8
-
plt.legend()
: dodaje legendę do wykresu, która pokazuje etykiety (label) dla poszczególnych linii. - 9
-
plt.show()
: wyświetla wykres.
Parametry legendy
Style, kolory linii
import numpy as np
import matplotlib.pyplot as plt
1= np.arange(14)
x 2= np.cos(5 * x)
y 3+ 2, 'blue', linestyle="-", label="niebieski")
plt.plot(x, y 4+ 1, 'red', linestyle=":", label="czerwony")
plt.plot(x, y 5'green', linestyle="--", label="zielony")
plt.plot(x, y, ='Legenda:')
plt.legend(title plt.show()
- 1
-
x = np.arange(14)
: tworzy tablicęx
z wartościami od 0 do 13 (łącznie z 13), korzystając z funkcjiarange
z bibliotekinumpy
. - 2
-
y = np.cos(5 * x)
: oblicza wartości funkcji cosinus dla każdej wartościx
, przemnożonej przez 5. Wynikowe wartości są zapisane w tablicyy
. - 3
-
plt.plot(x, y + 2, 'blue', linestyle="-", label="niebieski")
: rysuje niebieski wykres z wartościami z tablicyx
, a wartościy
przesunięte o 2 w górę. Linia jest ciągła (linestyle="-"
). - 4
-
plt.plot(x, y + 1, 'red', linestyle=":", label="czerwony")
: rysuje czerwony wykres z wartościami z tablicyx
, a wartościy
przesunięte o 1 w górę. Linia jest punktowana (linestyle=":"
). - 5
-
plt.plot(x, y, 'green', linestyle="--", label="zielony")
: rysuje zielony wykres z wartościami z tablicyx
i wartościamiy
. Linia jest przerywana (linestyle="--"
).
Wykresy jako obiekty
import matplotlib.pyplot as plt
import numpy as np
1= np.arange(0, 10, 0.2)
x 2= np.sin(x)
y 3= plt.subplots()
fig, ax 4
ax.plot(x, y)5 plt.show()
- 1
-
x = np.arange(0, 10, 0.2)
: tworzy tablicęx
z wartościami od 0 do 10 (bez 10) z krokiem 0.2, korzystając z funkcjiarange
z bibliotekinumpy
. - 2
-
y = np.sin(x)
: oblicza wartości funkcji sinus dla każdej wartościx
. Wynikowe wartości są zapisane w tablicyy
. - 3
-
fig, ax = plt.subplots()
: tworzy nową figurę (fig
) i osie (ax
) za pomocą funkcjisubplots
z bibliotekimatplotlib.pyplot
. Figura to obiekt zawierający wszystkie elementy wykresu, takie jak osie, linie wykresu, tekst itp. Osie to obiekt, który definiuje układ współrzędnych, na którym rysowany jest wykres. - 4
-
ax.plot(x, y)
: rysuje wykres wartościy
w funkcjix
na osiachax
utworzonych wcześniej. - 5
-
plt.show()
: wyświetla wykres.
Wykres liniowy i punktowy
Wykres punktowy (scatter plot) jest stosowany, gdy chcemy przedstawić związek między dwiema zmiennymi lub rozkład punktów danych w przestrzeni dwuwymiarowej. Wykres punktowy jest odpowiedni dla danych zarówno ciągłych, jak i dyskretnych, gdy chcemy zobrazować wzory, korelację lub związki między zmiennymi.
Oto niektóre sytuacje, w których wykresy punktowe są stosowane:
- Analiza korelacji między dwiema zmiennymi, na przykład związek między wiekiem a dochodem.
- Prezentowanie rozkładu punktów danych, na przykład wykazanie geograficznego rozmieszczenia sklepów w mieście.
- Eksploracja danych, aby zrozumieć strukturę danych i znaleźć wzorce, grupy lub anomalie, na przykład w celu identyfikacji skupisk danych w analizie skupień (clustering).
- Wykrywanie wartości odstających (outliers) w danych, na przykład dla wykrywania nietypowych obserwacji w zbiorze danych.
- Porównywanie różnych grup lub kategorii danych, na przykład porównanie wzrostu gospodarczego różnych krajów względem ich długu publicznego.
Wykresy punktowe są szczególnie przydatne, gdy mamy do czynienia z danymi o różnym charakterze (ciągłe lub dyskretne) oraz gdy chcemy zbadać korelację, grupy, wzorce lub wartości odstające.
import matplotlib.pyplot as plt
1= plt.figure()
fig 2= fig.add_subplot(111)
ax 31, 2, 3, 4], [10, 20, 25, 30], color='lightblue', linewidth=3)
ax.plot([40.3, 3.8, 1.2, 2.5], [11, 25, 9, 26], color='darkgreen', marker='^')
ax.scatter([50.5, 4.5)
ax.set_xlim( plt.show()
- 1
-
fig = plt.figure()
: tworzy nową figurę (fig
). Figura to obiekt zawierający wszystkie elementy wykresu, takie jak osie, linie wykresu, tekst itp. - 2
-
ax = fig.add_subplot(111)
: dodaje nowy zestaw osi (ax
) do figuryfig
za pomocą metodyadd_subplot
. Argument111
oznacza, że chcemy stworzyć siatkę 1x1 i umieścić nasz wykres na pierwszym (i jedynym) polu tej siatki. - 3
-
ax.plot([1, 2, 3, 4], [10, 20, 25, 30], color='lightblue', linewidth=3)
: rysuje niebieski wykres liniowy o szerokości linii równej 3 na osiachax
, używając listy wartości[1, 2, 3, 4]
dla osi X i[10, 20, 25, 30]
dla osi Y. - 4
-
ax.scatter([0.3, 3.8, 1.2, 2.5], [11, 25, 9, 26], color='darkgreen', marker='^')
: dodaje punkty w kształcie trójkątów (‘^’) na osiachax
w miejscach określonych przez listy wartości[0.3, 3.8, 1.2, 2.5]
dla osi X i[11, 25, 9, 26]
dla osi Y. Punkty są w kolorze ciemnozielonym. - 5
-
ax.set_xlim(0.5, 4.5)
: ustawia zakres wartości osi X na osiachax
od 0.5 do 4.5.
import matplotlib.pyplot as plt
= [230000, 350000, 480000, 280000, 420000, 610000, 390000, 580000]
house_prices = [90, 140, 210, 100, 170, 260, 150, 240]
square_meters 1='blue', marker='o')
plt.scatter(square_meters, house_prices, color'Metraż [m2]')
plt.xlabel('Cena domu [PLN]')
plt.ylabel('Związek między metrażem a ceną domu')
plt.title( plt.show()
- 1
-
plt.scatter(square_meters, house_prices, color='blue', marker='o')
: tworzy wykres punktowy (scatter plot
) z metrażem domów na osi X (square_meters
) i cenami domów na osi Y (house_prices
). Punkty są koloru niebieskiego (color='blue'
) i mają kształt kółka (marker='o'
).
from matplotlib import pyplot as plt
= [1, -3, 4, 5, 6]
x = [2, 6, -4, 1, 2]
y = [70, 60, 1, 50, 2]
area 1=">", color="brown", alpha=0.5, s=area)
plt.scatter(x, y, marker plt.show()
- 1
-
Kod
plt.scatter(x, y, marker=">", color="brown", alpha=0.5, s=area)
tworzy wykres punktowy (scatter plot)x
: lista lub tablica współrzędnych x punktów na wykresie.y
: lista lub tablica współrzędnych y punktów na wykresie. Wartościx
iy
muszą mieć tę samą długość, aby przedstawić każdy punkt na wykresie.marker
: symbol reprezentujący kształt punktów na wykresie. W tym przypadku, używamy">"
co oznacza strzałkę skierowaną w prawo.color
: kolor punktów na wykresie. W tym przypadku, używamy koloru “brown” (brązowy).alpha
: przezroczystość punktów na wykresie, gdzie wartość1
oznacza całkowitą nieprzezroczystość, a0
całkowitą przezroczystość. W tym przypadku, używamy wartości0.5
co oznacza półprzezroczystość punktów.s
: rozmiar punktów na wykresie, który może być pojedynczą wartością lub listą/tablicą wartości o długości takiej samej jak współrzędnex
iy
.
import numpy as np
import matplotlib.pyplot as plt
# Fixing random state for reproducibility
19680801)
np.random.seed(
= 50
N = np.random.rand(N)
x = np.random.rand(N)
y = np.random.rand(N)
colors = (30 * np.random.rand(N)) ** 2 # 0 to 15 point radii
area
=area, c=colors, alpha=0.5)
plt.scatter(x, y, s plt.show()
Kolory
- https://matplotlib.org/stable/gallery/color/named_colors.html
- https://pl.wikipedia.org/wiki/Lista_kolor%C3%B3w
import numpy as np
import matplotlib.pyplot as plt
= np.random.rand(50)
x = np.random.rand(50)
y = np.random.rand(50)
z 1=z, cmap='viridis')
plt.scatter(x, y, c2
plt.colorbar()'Oś X')
plt.xlabel('Oś Y')
plt.ylabel('Mapa kolorów dla wykresu punktowego')
plt.title( plt.show()
- 1
-
plt.scatter(x, y, c=z, cmap='viridis')
: ta linia tworzy wykres punktowy (scatter plot
) z danymix
,y
iz
.x
iy
to dane, które będą wyświetlane na osi X i Y, az
to dane, które będą używane do stworzenia mapy kolorów. Argumentcmap='viridis'
określa mapę kolorów, która będzie użyta do przypisania kolorów do wartości numerycznych. - 2
-
plt.colorbar()
: ta linia dodaje pasek kolorów do wykresu punktowego. Pasek kolorów wskazuje, które kolory odpowiadają wartościom numerycznym na mapie kolorów.
Mapy kolorów
Lista wbudowanych map kolorów: https://matplotlib.org/stable/tutorials/colors/colormaps.html
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import Normalize
# Przykładowe dane
= np.random.rand(50)
x = np.random.rand(50)
y = np.random.rand(50) * 100
z
# Utworzenie mapy kolorów
= Normalize(vmin=0, vmax=100)
norm = plt.cm.viridis
cmap
# Tworzenie wykresu punktowego z mapą kolorów
=z, cmap=cmap, norm=norm)
plt.scatter(x, y, c
plt.colorbar()
# Dodanie etykiet osi
'Oś X')
plt.xlabel('Oś Y')
plt.ylabel('Mapa kolorów dla wykresu punktowego')
plt.title(
# Wyświetlenie wykresu
plt.show()
Markery
https://matplotlib.org/stable/api/markers_api.html
import matplotlib.pyplot as plt
11, 2, 3, 4], [10, 20, 25, 30], color='lightblue', linewidth=3)
plt.plot([20.3, 3.8, 1.2, 2.5], [11, 25, 9, 26], color='darkgreen', marker='^')
plt.scatter([30.5, 4.5)
plt.xlim( plt.show()
- 1
-
plt.plot([1, 2, 3, 4], [10, 20, 25, 30], color='lightblue', linewidth=3)
- Tworzy wykres liniowy z podanymi współrzędnymi punktów (1, 10), (2, 20), (3, 25) i (4, 30). Kolor linii to jasnoniebieski (lightblue), a jej grubość wynosi 3. - 2
-
plt.scatter([0.3, 3.8, 1.2, 2.5], [11, 25, 9, 26], color='darkgreen', marker='^')
- Tworzy wykres punktowy z podanymi współrzędnymi punktów (0.3, 11), (3.8, 25), (1.2, 9) i (2.5, 26). - Kolor punktów to ciemnozielony (darkgreen), a ich kształt to trójkąty wypełnione w górę (^). - 3
-
plt.xlim(0.5, 4.5)
- Ustala zakres wartości na osi X, zaczynając od 0.5 do 4.5.
Zapis do pliku
- PNG (Portable Network Graphics) - plik rasterowy, popularny format do zapisywania obrazów w Internecie.
- JPEG (Joint Photographic Experts Group) - plik rasterowy, popularny format do zapisywania obrazów fotograficznych.
- SVG (Scalable Vector Graphics) - plik wektorowy, dobrze skalujący się i zachowujący jakość na różnych rozdzielczościach.
- PDF (Portable Document Format) - format dokumentów wektorowych, popularny w druku i przeglądaniu dokumentów.
- EPS (Encapsulated PostScript) - plik wektorowy, często używany w publikacjach naukowych i materiałach drukowanych.
- TIFF (Tagged Image File Format) - plik rasterowy, popularny w profesjonalnym druku i grafice.
- WebP to nowoczesny format obrazów opracowany przez Google, który oferuje lepszą kompresję oraz niższe straty jakości w porównaniu do popularnych formatów JPEG i PNG, co przyczynia się do szybszego ładowania stron internetowych i oszczędności transferu danych.
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0, 10)
x = x ^ 2
y # Labeling the Axes and Title
"Graph Drawing")
plt.title("Time")
plt.xlabel("Distance")
plt.ylabel(
# Formatting the line colors
'r')
plt.plot(x, y,
# Formatting the line type
'>')
plt.plot(x, y,
# save in pdf formats
'timevsdist.pdf', format='pdf') plt.savefig(
Linie poziome i pionowe
Funkcje axhline
i axvline
służą do dodawania poziomych (horyzontalnych) i pionowych (wertykalnych) linii do wykresu, odpowiednio.
axhline
rysuje horyzontalną linię przechodzącą przez określoną wartość na osi Y, niezależnie od wartości na osi X. Składnia funkcji to axhline(y, xmin, xmax, **kwargs)
, gdzie:
y
- wartość na osi Y, przez którą przechodzi linia (domyślnie 0)xmin
,xmax
- wartości z zakresu 0-1 określające początek i koniec linii na osi X (domyślnie 0 i 1)**kwargs
- dodatkowe argumenty, takie jakcolor
,linewidth
czylinestyle
, służące do kontrolowania wyglądu linii
axvline
rysuje pionową linię przechodzącą przez określoną wartość na osi X, niezależnie od wartości na osi Y. Składnia funkcji to axvline(x, ymin, ymax, **kwargs)
, gdzie:
x
- wartość na osi X, przez którą przechodzi linia (domyślnie 0)ymin
,ymax
- wartości z zakresu 0-1 określające początek i koniec linii na osi Y (domyślnie 0 i 1)**kwargs
- dodatkowe argumenty, takie jakcolor
,linewidth
czylinestyle
, służące do kontrolowania wyglądu linii
import matplotlib.pyplot as plt
0, 5], [0, 5], color='blue')
plt.plot([2, color='red', linewidth=2) # Horyzontalna linia przechodząca przez Y=2
plt.axhline(3, color='green', linestyle='--') # Pionowa linia przechodząca przez X=3, styl linii przerywany
plt.axvline( plt.show()
W powyższym przykładzie, axhline
rysuje czerwoną linię horyzontalną przechodzącą przez wartość 2 na osi Y, natomiast axvline
rysuje zieloną przerywaną linię pionową przechodzącą przez wartość 3 na osi X.
import numpy as np
import matplotlib.pyplot as plt
= np.arange(-5, 5, 0.1)
x = x[x < 0]
x1 = 1 / x1
y1
plt.plot(x1, y1)= x[x > 0]
x2 = 1 / x2
y2
plt.plot(x2, y2)-10, 10)
plt.ylim(=0, linestyle="--")
plt.axhline(y=0, linestyle=":")
plt.axvline(x plt.show()
Adnotacje (tekst) na wykresie
Funkcja annotate
służy do dodawania adnotacji (tekstu i strzałek) na wykresie w celu wyróżnienia lub zaznaczenia określonych punktów czy obszarów.
Składnia funkcji to annotate(text, xy, xytext, arrowprops, **kwargs)
, gdzie:
text
- ciąg znaków reprezentujący tekst adnotacji.xy
- krotka (x, y) określająca współrzędne punktu, do którego odnosimy się w adnotacji.xytext
- krotka (x, y) określająca współrzędne, w których tekst adnotacji powinien się zacząć. Jeśli nie podano, tekst zostanie wyświetlony bezpośrednio przy współrzędnychxy
.arrowprops
- słownik zawierający opcje rysowania strzałki, takie jakarrowstyle
,color
czylinewidth
. Jeśli nie podano, strzałka nie zostanie narysowana.**kwargs
- dodatkowe argumenty dotyczące formatowania tekstu, takie jakfontsize
,color
czyfontweight
.
import matplotlib.pyplot as plt
1, 2, 3, 4], [2, 4, 9, 16], marker='o', linestyle='-', color='blue')
plt.plot(['X-axis')
plt.xlabel('Y-axis')
plt.ylabel(
'Ważny punkt (2, 4)',
plt.annotate(=(2, 4), # Współrzędne punktu do zaznaczenia
xy=(2.5, 6), # Współrzędne początku tekstu
xytext=dict(facecolor='red'), # Właściwości strzałki (kolor)
arrowprops=12, # Rozmiar czcionki
fontsize='blue', # Kolor tekstu
color='bold') # Grubość czcionki
fontweight
plt.show()
Jeśli chcesz dodać adnotację tylko z tekstem, składnia funkcji to annotate(text, xy, **kwargs)
, gdzie:
text
- ciąg znaków reprezentujący tekst adnotacji.xy
- krotka (x, y) określająca współrzędne, w których tekst adnotacji powinien się zacząć.**kwargs
- dodatkowe argumenty dotyczące formatowania tekstu, takie jakfontsize
,color
,fontweight
czyhorizontalalignment
.
import matplotlib.pyplot as plt
1, 2, 3, 4], [2, 4, 9, 16], marker='o', linestyle='-', color='blue')
plt.plot(['X-axis')
plt.xlabel('Y-axis')
plt.ylabel(
'Ważny punkt (2, 4)',
plt.annotate(=(2, 4), # Współrzędne początku tekstu
xy=12, # Rozmiar czcionki
fontsize='blue', # Kolor tekstu
color='bold', # Grubość czcionki
fontweight='right') # Wyrównanie tekstu do prawej strony
horizontalalignment
plt.show()
Etykiety osi
Funkcje xlabel
i ylabel
łużą do dodawania etykiet osi X i Y na wykresie, odpowiednio. Etykiety osi pomagają w lepszym zrozumieniu prezentowanych danych, wskazując, jakie wartości są reprezentowane na poszczególnych osiach.
Składnia funkcji to xlabel(label, **kwargs)
lub ylabel(label, **kwargs)
, gdzie:
label
- ciąg znaków reprezentujący tekst etykiety osi.**kwargs
- dodatkowe argumenty dotyczące formatowania etykiety, takie jakfontsize
,color
,fontweight
czyhorizontalalignment
.
import matplotlib.pyplot as plt
= [1, 2, 3, 4]
x = [2, 4, 6, 8]
y
='o', linestyle='-', color='blue')
plt.plot(x, y, marker
'Oś X', fontsize=12, color='red', fontweight='bold')
plt.xlabel('Oś Y', fontsize=12, color='green', fontweight='bold')
plt.ylabel(
plt.show()
Funkcja annotate
pozwala na użycie składni LaTeX w tekście adnotacji, co jest szczególnie przydatne, gdy chcemy dodać na wykresie równania matematyczne lub symbole. Aby użyć składni LaTeX, należy umieścić tekst w znacznikach dolara ($
).
import matplotlib.pyplot as plt
import numpy as np
= np.linspace(0, 2 * np.pi, 100)
x = np.sin(x)
y
plt.plot(x, y)'x')
plt.xlabel('sin(x)')
plt.ylabel(
# Adnotacja z tekstem w składni LaTeX
r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
plt.annotate(=(2 * np.pi / 3, np.sqrt(3) / 2), # Współrzędne punktu do zaznaczenia
xy=(3, 1.0), # Współrzędne początku tekstu
xytext=12, # Rozmiar czcionki
fontsize=dict(facecolor='red'), # Właściwości strzałki (kolor)
arrowprops=dict(facecolor='white')) # Ramka wokół tekstu (kolor tła)
bbox
plt.show()
Etykiety podziałki osi
Funkcje xticks
i yticks
służą do manipulowania etykietami osi X i Y oraz wartościami na osi, odpowiednio. Pozwalają na kontrolowanie wyświetlania etykiet, odstępów między nimi oraz formatowania.
xticks
manipuluje etykietami i wartościami na osi X, a yticks
na osi Y. Składnia funkcji to xticks(ticks, labels, **kwargs)
lub yticks(ticks, labels, **kwargs)
, gdzie:
ticks
- lista wartości, dla których mają być umieszczone etykiety na osi. Jeśli nie podano, pozostają aktualne wartości.labels
- lista ciągów znaków, które mają być użyte jako etykiety dla wartości z listyticks
. Jeśli nie podano, zostaną użyte domyślne etykiety.**kwargs
- dodatkowe argumenty dotyczące formatowania etykiet, takie jakfontsize
,color
,fontweight
czyrotation
.
import matplotlib.pyplot as plt
import numpy as np
= np.arange(0, 10, 0.1)
x = np.sin(x)
y
plt.plot(x, y)
= [0, np.pi, 2 * np.pi, 3 * np.pi]
xtick_vals = ['0', '$\pi$', '$2\pi$', '$3\pi$']
xtick_labels
= [-1, -0.5, 0, 0.5, 1]
ytick_vals = ['-1', '-1/2', '0', '1/2', '1']
ytick_labels
=12, color='red')
plt.xticks(xtick_vals, xtick_labels, fontsize=12, rotation=45)
plt.yticks(ytick_vals, ytick_labels, fontsize
plt.show()
import numpy as np
import matplotlib.pyplot as plt
= np.arange(-3, 3, 0.1)
x = x ** 2 + 2 * x
y
plt.plot(x, y)=[-1, 5], text="cos tam")
plt.annotate(xy-2, 1, 2], color="red")
plt.xticks(["abc", color="green")
plt.ylabel( plt.show()
Wykres kołowy
Wykres kołowy (pie chart) jest stosowany, gdy chcemy przedstawić proporcje różnych kategorii lub segmentów w stosunku do całości. Jest szczególnie użyteczny, gdy mamy niewielką liczbę kategorii (zazwyczaj nie więcej niż 5-7) oraz gdy dane są jakościowe (kategoryczne). Wykres kołowy pozwala na wizualne zrozumienie udziałów procentowych poszczególnych kategorii w ramach całego zbioru danych.
Przykłady danych, dla których stosuje się wykres kołowy:
- Struktura wydatków domowych, gdzie kategorie to: mieszkanie, jedzenie, transport, rozrywka, inne.
- Procentowy udział w rynku różnych firm w danej branży.
- Rozkład głosów na partie polityczne w wyborach.
- Procentowy udział różnych rodzajów energii w produkcji energii elektrycznej (węgiel, gaz, energia odnawialna, energia jądrowa itp.).
Chociaż wykresy kołowe mają swoje zastosowania, są również krytykowane za ograniczoną precyzję w ocenie proporcji. Dlatego często zaleca się stosowanie innych rodzajów wykresów, takich jak słupkowe (bar chart) czy stosunkowe (stacked bar chart), które mogą być bardziej przejrzyste i precyzyjne w porównywaniu wartości między kategoriami.
Funkcja pie
służy do tworzenia wykresów kołowych. Pozwala na wizualne przedstawienie proporcji różnych segmentów względem całości.
Składnia funkcji to plt.pie(x, explode=None, labels=None, colors=None, autopct=None, shadow=False, startangle=0, counterclock=True)
, gdzie:
x
- lista wartości numerycznych, reprezentująca dane dla każdego segmentu. Funkcjapie
automatycznie obliczy procentowe udziały każdej wartości względem sumy wszystkich wartości.explode
- lista wartości, które określają, czy (i jak bardzo) każdy segment ma być oddzielony od środka wykresu. Wartość 0 oznacza brak oddzielenia, a wartości większe oznaczają większe oddzielenie.labels
- lista ciągów znaków, które będą używane jako etykiety segmentów.colors
- lista kolorów dla poszczególnych segmentów.autopct
- formatowanie procentów, które mają być wyświetlane na wykresie (np.'%1.1f%%'
).shadow
- wartość logiczna (True/False), która określa, czy wykres ma mieć cień. Domyślnie ustawione naFalse
.startangle
- kąt początkowy wykresu kołowego, mierzony w stopniach przeciwnie do ruchu wskazówek zegara od osi X.counterclock
- wartość logiczna (True/False), która określa, czy segmenty mają być rysowane zgodnie z ruchem wskazówek zegara. Domyślnie ustawione naTrue
.
import matplotlib.pyplot as plt
# Dane
= [20, 30, 40, 10]
sizes = ['Kategoria A', 'Kategoria B', 'Kategoria C', 'Kategoria D']
labels = ['red', 'blue', 'green', 'yellow']
colors = (0, 0.1, 0, 0) # Wyróżnienie segmentu Kategoria B
explode
# Tworzenie wykresu kołowego
=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)
plt.pie(sizes, explode
# Dodanie tytułu
'Przykład wykresu kołowego')
plt.title(
# Równomierne skalowanie osi X i Y, aby koło było okrągłe
'equal')
plt.axis(
plt.show()
import matplotlib.pyplot as plt
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
= ['Frogs', 'Hogs', 'Dogs', 'Logs']
labels = [15, 30, 45, 10]
sizes = [0, 0.1, 0, 0] # only "explode" the 2nd slice (i.e. 'Hogs')
explode
= plt.subplots()
fig1, ax1 =explode, labels=labels, autopct='%1.1f%%',
ax1.pie(sizes, explode=True, startangle=90)
shadow'equal') # Equal aspect ratio ensures that pie is drawn as a circle.
ax1.axis(
plt.show()
import matplotlib.pyplot as plt
# Pie chart, where the slices will be ordered and plotted counter-clockwise:
= ['Frogs', 'Hogs', 'Dogs', 'Logs']
labels = [15, 30, 45, 10]
sizes = [0, 0.1, 0, 0] # only "explode" the 2nd slice (i.e. 'Hogs')
explode
=explode, labels=labels, autopct='%1.1f%%',
plt.pie(sizes, explode=True, startangle=90)
shadow'equal')
plt.axis(
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# Dane
= [20, 30, 40, 10]
sizes = ['Kategoria A', 'Kategoria B', 'Kategoria C', 'Kategoria D']
labels = len(sizes)
n
# Tworzenie mapy kolorów
= plt.get_cmap('viridis')
cmap = [cmap(i) for i in np.linspace(0, 1, n)]
colors
# Tworzenie wykresu kołowego
=labels, colors=colors, autopct='%1.1f%%', startangle=90)
plt.pie(sizes, labels
# Dodanie tytułu
'Przykład wykresu kołowego z mapą kolorów')
plt.title(
# Równomierne skalowanie osi X i Y, aby koło było okrągłe
'equal')
plt.axis(
plt.show()
Podwykresy
Funkcja subplot
pozwala na tworzenie wielu wykresów w pojedynczym oknie lub figurze. Dzięki temu można porównać różne wykresy, które mają wspólny kontekst lub prezentować różne aspekty danych.
Składnia funkcji to plt.subplot(nrows, ncols, index, **kwargs)
, gdzie:
nrows
- liczba wierszy w siatce wykresów.ncols
- liczba kolumn w siatce wykresów.index
- indeks bieżącego wykresu, który ma być utworzony (indeksacja zaczyna się od 1). Indeksy są numerowane wierszami, tzn. kolejny wykres w rzędzie będzie miał indeks o jeden większy.**kwargs
- dodatkowe argumenty dotyczące formatowania wykresu.
import matplotlib.pyplot as plt
import numpy as np
= np.linspace(0, 2 * np.pi, 100)
x
# Tworzenie siatki wykresów 2x2
# Pierwszy wykres (w lewym górnym rogu)
2, 2, 1)
plt.subplot(
plt.plot(x, np.sin(x))'sin(x)')
plt.title(
# Drugi wykres (w prawym górnym rogu)
2, 2, 2)
plt.subplot(
plt.plot(x, np.cos(x))'cos(x)')
plt.title(
# Trzeci wykres (w lewym dolnym rogu)
2, 2, 3)
plt.subplot(
plt.plot(x, np.tan(x))'tan(x)')
plt.title(
# Czwarty wykres (w prawym dolnym rogu)
2, 2, 4)
plt.subplot(-np.sin(x))
plt.plot(x, '-sin(x)')
plt.title(
# Dopasowanie odstępów między wykresami
plt.tight_layout()
# Wyświetlenie wykresów
plt.show()
import numpy as np
import matplotlib.pyplot as plt
= np.arange(0,3,0.1)
x 2, 2, 1)
plt.subplot(
plt.plot(x, x)2, 2, 2)
plt.subplot(* 2)
plt.plot(x, x 2, 2, 3)
plt.subplot(* x)
plt.plot(x, x 2, 2, 4)
plt.subplot(** 3)
plt.plot(x, x
plt.tight_layout() plt.show()
Siatka
Funkcja grid
pozwala na dodanie siatki na wykresie, co ułatwia ocenę wartości na osiach i ich porównywanie. Można kontrolować kolor, grubość i styl linii siatki, a także określać, które osie mają mieć siatkę.
Składnia funkcji to plt.grid(b=None, which='major', axis='both', **kwargs)
, gdzie:
b
- wartość logiczna (True/False), która określa, czy siatka ma być wyświetlana. Domyślnie ustawione naNone
, co oznacza, że Matplotlib automatycznie określa, czy siatka powinna być wyświetlana na podstawie konfiguracji.which
- określa, które linie siatki mają być wyświetlane: ‘major’ (tylko linie siatki dla głównych podziałek), ‘minor’ (linie siatki dla podziałek pomocniczych), lub ‘both’ (domyślnie - linie siatki dla obu rodzajów podziałek).axis
- określa, które osie mają mieć siatkę: ‘both’ (obie osie), ‘x’ (tylko oś X), lub ‘y’ (tylko oś Y).**kwargs
- dodatkowe argumenty dotyczące formatowania siatki.
import matplotlib.pyplot as plt
import numpy as np
= np.linspace(0, 2 * np.pi, 100)
x = np.sin(x)
y
# Tworzenie wykresu
='blue', linewidth=2)
plt.plot(x, y, color
# Dodanie siatki
True, which='both', color='gray', linewidth=0.5, linestyle='--')
plt.grid(
# Dodanie tytułu i etykiet osi
'Wykres funkcji sin(x)')
plt.title('x')
plt.xlabel('sin(x)')
plt.ylabel(
# Wyświetlenie wykresu
plt.show()
import matplotlib.pyplot as plt
import numpy as np
= np.linspace(0, np.pi * 2, 100)
x 3, 1, 1)
plt.subplot('r')
plt.plot(x, np.sin(x), True)
plt.grid(0, np.pi * 2)
plt.xlim(3, 1, 2)
plt.subplot('g')
plt.plot(x, np.cos(x), True)
plt.grid(0, np.pi * 2)
plt.xlim(3, 1, 3)
plt.subplot('r', x, np.cos(x), 'g')
plt.plot(x, np.sin(x), True)
plt.grid(0, np.pi * 2)
plt.xlim(
plt.tight_layout()"fig3.png", dpi=72)
plt.savefig( plt.show()
Wykres dwuosiowy
Funkcja twinx
w bibliotece Matplotlib pozwala na utworzenie drugiej osi Y, która będzie współdzielić oś X z pierwszą osią Y. Dzięki temu, można w prosty sposób przedstawić dwie serie danych, które są mierzne w różnych jednostkach, ale mają wspólną zmienną niezależną.
Składnia funkcji to twinx(ax=None, **kwargs)
, gdzie:
ax
- obiekt Axes, który ma być użyty do tworzenia nowej osi Y. Domyślnie ustawione naNone
, co oznacza, że będzie tworzona nowa osie Y.**kwargs
- dodatkowe argumenty dotyczące formatowania nowej osi Y.
import numpy as np
import matplotlib.pyplot as plt
= plt.subplots()
fig, ax1 = np.arange(0.01, 10.0, 0.01)
x = x ** 2
y 'r')
ax1.plot(x, y, = ax1.twinx()
ax2 = np.sin(x)
y2
ax2.plot(x, y2)
fig.tight_layout() plt.show()
import numpy as np
import matplotlib.pyplot as plt
= plt.subplots()
fig, ax1 = np.arange(0.01, 10.0, 0.01)
t = np.exp(t)
s1 'b-')
ax1.plot(t, s1, 'time (s)')
ax1.set_xlabel(
'exp', color='b')
ax1.set_ylabel('y', colors='b')
ax1.tick_params(
= ax1.twinx()
ax2 = np.sin(2 * np.pi * t)
s2 'r.')
ax2.plot(t, s2, 'sin', color='r')
ax2.set_ylabel('y', colors='r')
ax2.tick_params(
fig.tight_layout() plt.show()
Wykres słupkowy
Wykres słupkowy jest stosowany do przedstawiania danych kategorialnych lub dyskretnych. Jest to powszechnie używany rodzaj wykresu, który pomaga wizualnie porównać wartości lub ilości dla różnych kategorii. Oto kilka typów danych, dla których wykres słupkowy może być stosowany:
- Częstości: Wykres słupkowy jest używany do przedstawiania liczby wystąpień różnych kategorii, takich jak wyniki ankiety, preferencje konsumentów lub różne grupy ludności.
- Proporcje: Można go stosować do przedstawiania udziału procentowego poszczególnych kategorii w całości, np. udział rynkowy różnych firm, procentowe wyniki testów czy procentowy rozkład ludności według wieku.
- Wartości liczbowe: Wykres słupkowy może przedstawiać wartości liczbowe związane z różnymi kategoriami, np. sprzedaż produktów, przychody z różnych źródeł czy średnią temperaturę w różnych miastach.
- Danych szeregów czasowych: Wykres słupkowy może być również używany do przedstawiania danych szeregów czasowych w przypadku, gdy zmiany występują w regularnych odstępach czasu, np. roczna sprzedaż, miesięczne opady czy tygodniowe przychody.
Warto zauważyć, że wykresy słupkowe są odpowiednie, gdy mamy do czynienia z niewielką liczbą kategorii, ponieważ zbyt wiele słupków na wykresie może sprawić, że stanie się on trudny do interpretacji. W takich przypadkach warto rozważyć inne typy wykresów, takie jak wykres kołowy lub stosunkowy.
Funkcja bar
w bibliotece Matplotlib służy do tworzenia wykresów słupkowych (bar chart). Wykresy słupkowe są często stosowane, gdy chcemy porównać wartości różnych kategorii.
Składnia funkcji to plt.bar(x, height, width=0.8, bottom=None, align='center', data=None, **kwargs)
, gdzie:
x
- pozycje słupków na osi X. Może to być sekwencja wartości numerycznych lub lista etykiet, które będą umieszczone na osi X.height
- wysokość słupków.width
- szerokość słupków.bottom
- położenie dolnej krawędzi słupków. Domyślnie ustawione naNone
, co oznacza, że słupki zaczynają się od zera.align
- sposób wyśrodkowania słupków wzdłuż osi X. Domyślnie ustawione na ‘center’.data
- obiekt DataFrame, który zawiera dane do wykresu.**kwargs
- dodatkowe argumenty dotyczące formatowania wykresu, takie jak kolor, przezroczystość, etykiety osi, tytuł i legendę.
import matplotlib.pyplot as plt
# Dane
= ['Kategoria 1', 'Kategoria 2', 'Kategoria 3']
kategorie = [10, 20, 15]
wartosci
# Tworzenie wykresu słupkowego
='green', alpha=0.5)
plt.bar(kategorie, wartosci, color
# Dodanie tytułu i etykiet osi
'Wykres słupkowy')
plt.title('Kategorie')
plt.xlabel('Wartości')
plt.ylabel(
# Wyświetlenie wykresu
plt.show()
import numpy as np
import matplotlib.pyplot as plt
= [10, 15, 18, 22, 27]
wys = np.arange(0, len(wys))
x = ["black", "red", "green", "yellow", "pink"]
k =k, width=0.75)
plt.bar(x, wys, color= ["Kategoria A", "Kategoria B", "Kategoria C", "Kategoria D", "Kategoria E"]
etyk =45)
plt.xticks(x, etyk, rotation= [20, 30, 40, 50, 60]
y2
plt.plot(x, y2)"tytulik")
plt.title(
plt.tight_layout() plt.show()
import numpy as np
import matplotlib.pyplot as plt
= [3, 12, 5, 18, 45]
height = ('A', 'B', 'C', 'D', 'E')
bars = np.arange(len(bars))
y_pos =['black', 'red', 'green', 'blue', 'cyan'])
plt.bar(y_pos, height, color
plt.xticks(y_pos, bars) plt.show()
import numpy as np
import matplotlib.pyplot as plt
= [[30, 25, 50, 20],
data 40, 23, 51, 17],
[35, 22, 45, 19]]
[= np.arange(4)
X
+ 0.00, data[0], color='b', width=0.25, label="A")
plt.bar(X + 0.25, data[1], color='g', width=0.25, label="B")
plt.bar(X + 0.50, data[2], color='r', width=0.25, label="C")
plt.bar(X = np.arange(2015,2019)
labelsbar +0.25,labelsbar)
plt.xticks(X
plt.legend() plt.show()
import numpy as np
import matplotlib.pyplot as plt
= 5
N
= (20, 35, 30, 35, 27)
boys = (25, 32, 34, 20, 25)
girls = np.arange(N)
ind = 0.35
width
="boys")
plt.bar(ind, boys, width, label=boys, label="girls")
plt.bar(ind, girls, width,bottom
'Contribution')
plt.ylabel('Contribution by the teams')
plt.title('T1', 'T2', 'T3', 'T4', 'T5'))
plt.xticks(ind, (0, 81, 10))
plt.yticks(np.arange(
plt.legend() plt.show()
Funkcja barh
służy do tworzenia wykresów słupkowych horyzontalnych (horizontal bar chart). Wykresy słupkowe horyzontalne są często stosowane, gdy chcemy porównać wartości różnych kategorii, a etykiety na osi X są długie lub są bardzo liczne.
Składnia funkcji to plt.barh(y, width, height=0.8, left=None, align='center', data=None, **kwargs)
, gdzie:
y
- pozycje słupków na osi Y. Może to być sekwencja wartości numerycznych lub lista etykiet, które będą umieszczone na osi Y.width
- szerokość słupków.height
- wysokość słupków.left
- położenie lewej krawędzi słupków. Domyślnie ustawione naNone
, co oznacza, że słupki zaczynają się od zera.align
- sposób wyśrodkowania słupków wzdłuż osi Y. Domyślnie ustawione na ‘center’.data
- obiekt DataFrame, który zawiera dane do wykresu.**kwargs
- dodatkowe argumenty dotyczące formatowania wykresu, takie jak kolor, przezroczystość, etykiety osi, tytuł i legenda.
import matplotlib.pyplot as plt
# Dane
= ['Kategoria 1', 'Kategoria 2', 'Kategoria 3']
kategorie = [10, 20, 15]
wartosci
# Tworzenie wykresu słupkowego horyzontalnego
='green', alpha=0.5)
plt.barh(kategorie, wartosci, color
# Dodanie tytułu i etykiet osi
'Wykres słupkowy horyzontalny')
plt.title('Wartości')
plt.xlabel('Kategorie')
plt.ylabel(
# Wyświetlenie wykresu
plt.show()
import numpy as np
import matplotlib.pyplot as plt
= [3, 12, 5, 18, 45]
width = ('A', 'B', 'C', 'D', 'E')
bars = np.arange(len(bars))
x_pos =['black', 'red', 'green', 'blue', 'cyan'])
plt.barh(x_pos, width, color
plt.yticks(x_pos, bars) plt.show()
import numpy as np
import matplotlib.pyplot as plt
= [[30, 25, 50, 20],
data 40, 23, 51, 17],
[35, 22, 45, 19]]
[= np.arange(4)
Y
+ 0.00, data[0], color='b', height=0.25, label="A")
plt.barh(Y + 0.25, data[1], color='g', height=0.25, label="B")
plt.barh(Y + 0.50, data[2], color='r', height=0.25, label="C")
plt.barh(Y = np.arange(2015,2019)
labelsbar + 0.25, labelsbar)
plt.yticks(Y
plt.legend() plt.show()
import numpy as np
import matplotlib.pyplot as plt
= 5
N
= (20, 35, 30, 35, 27)
boys = (25, 32, 34, 20, 25)
girls = np.arange(N)
ind = 0.35
height
="boys")
plt.barh(ind, boys, height, label=boys, label="girls")
plt.barh(ind, girls, height, left
'Contribution')
plt.xlabel('Contribution by the teams')
plt.title('T1', 'T2', 'T3', 'T4', 'T5'))
plt.yticks(ind, (0, 81, 10))
plt.xticks(np.arange(
plt.legend() plt.show()
Wykres pudełkowy
Wykres pudełkowy (inaczej box plot) jest stosowany do przedstawiania informacji o rozkładzie danych liczbowych oraz do identyfikacji wartości odstających. Jest szczególnie przydatny w przypadku analizy danych ciągłych, które mają różne wartości i rozkłady. Oto kilka typów danych, dla których wykres pudełkowy może być stosowany:
Porównanie grup: Wykres pudełkowy jest używany do porównywania rozkładu danych między różnymi grupami. Na przykład, można go użyć do porównania wyników testów uczniów z różnych szkół, wynagrodzeń w różnych sektorach czy wartości sprzedaży różnych produktów.
Identyfikacja wartości odstających: Wykres pudełkowy jest używany do identyfikacji wartości odstających (outlierów) w danych, które mogą wskazywać na błędy pomiarowe, nietypowe obserwacje lub wartości ekstremalne. Na przykład, może to być użyte do wykrywania anomalii w danych meteorologicznych, wartościach giełdowych czy danych medycznych.
Analiza rozkładu: Wykres pudełkowy pomaga zrozumieć rozkład danych, takich jak mediana, kwartyle, zakres wartości i potencjalne wartości odstające. Może to być użyte w analizie danych takich jak oceny, wzrost ludności, wartość akcji czy ceny nieruchomości.
Wizualizacja wielowymiarowych danych: Wykres pudełkowy może być używany do wizualizacji wielowymiarowych danych, przedstawiając rozkład wielu zmiennych na jednym wykresie. Na przykład, można porównać zmienne takie jak wiek, zarobki i wykształcenie w badaniu demograficznym.
Warto zauważyć, że wykres pudełkowy jest szczególnie przydatny, gdy chcemy zrozumieć rozkład danych, ale nie pokazuje on konkretnej liczby obserwacji ani wartości indywidualnych punktów danych. W takich przypadkach inne rodzaje wykresów, takie jak wykres punktowy, mogą być bardziej odpowiednie.
Wykres pudełkowy pokazuje pięć statystyk opisowych danych: minimum, pierwszy kwartyl (Q1), medianę, trzeci kwartyl (Q3) i maksimum.
import matplotlib.pyplot as plt
import numpy as np
# Przykładowe dane
= np.random.rand(100)
data
# Tworzenie wykresu
= plt.subplots()
fig, ax
# Rysowanie boxplota
ax.boxplot(data)
# Dodanie opisów
'Boxplot')
ax.set_title('Wartości')
ax.set_ylabel('Przykładowe dane'])
ax.set_xticklabels([
# Wyświetlanie wykresu
plt.show()
import matplotlib.pyplot as plt
import numpy as np
# Creating dataset
10)
np.random.seed(= np.random.normal(100, 20, 200)
data
# Creating plot
plt.boxplot(data)
# show plot
plt.show()
Histogram
Wykres histogramu jest stosowany do przedstawiania rozkładu danych liczbowych, zarówno ciągłych, jak i dyskretnych. Histogram pokazuje częstość występowania danych w określonych przedziałach (binach), co pozwala na analizę dystrybucji i identyfikację wzorców. Oto kilka typów danych, dla których histogram może być stosowany:
Analiza rozkładu: Histogram może być używany do analizy rozkładu danych, takich jak oceny, ceny, wartości akcji, wzrost ludności czy dane meteorologiczne. Pozwala to zrozumieć, jak dane są rozłożone, czy są skoncentrowane wokół pewnych wartości, czy mają długi ogon (tj. czy występują wartości odstające).
Identyfikacja tendencji: Histogram może pomóc w identyfikacji tendencji lub wzorców w danych. Na przykład, można użyć histogramu do identyfikacji sezonowych wzorców sprzedaży, zmian w wartościach giełdowych czy wzorców migracji ludności.
Porównanie grup: Histogram może być również używany do porównywania rozkładu danych między różnymi grupami. Na przykład, można go użyć do porównania wyników testów uczniów z różnych szkół, wynagrodzeń w różnych sektorach czy wartości sprzedaży różnych produktów.
Szacowanie parametrów: Histogram może pomóc w szacowaniu parametrów rozkładu, takich jak średnia, mediana czy wariancja, co może być użyteczne w analizie statystycznej.
Warto zauważyć, że histogram jest odpowiedni dla danych liczbowych, ale nie jest przeznaczony do przedstawiania danych kategorialnych. W takich przypadkach inne rodzaje wykresów, takie jak wykres słupkowy, mogą być bardziej odpowiednie.
import matplotlib.pyplot as plt
= [1, 1, 2, 3, 3, 5, 7, 8, 9, 10,
x 10, 11, 11, 13, 13, 15, 16, 17, 18, 18]
=4)
plt.hist(x, bins plt.show()
import pandas as pd
import matplotlib.pyplot as plt
= [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
ages = [18, 25, 35, 60, 100]
bins = pd.cut(ages, [18, 26, 36, 61, 100], right=False)
cats2 print(cats2)
= ['Youth', 'YoungAdult',
group_names 'MiddleAged', 'Senior']
=pd.cut(ages, bins, labels=group_names)
data
plt.hist(data) plt.show()
[[18, 26), [18, 26), [18, 26), [26, 36), [18, 26), ..., [26, 36), [61, 100), [36, 61), [36, 61), [26, 36)]
Length: 12
Categories (4, interval[int64, left]): [[18, 26) < [26, 36) < [36, 61) < [61, 100)]
import pandas as pd
import matplotlib.pyplot as plt
= [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
ages = [18, 25, 35, 60, 100]
bins =bins)
plt.hist(ages, bins plt.show()
import matplotlib.pyplot as plt
= [1, 1, 2, 3, 3, 5, 7, 8, 9, 10,
x 10, 11, 11, 13, 13, 15, 14, 12, 18, 18]
=[0,5,10,15,20])
plt.hist(x, bins0,5,10,15,20])
plt.xticks([ plt.show()
import matplotlib.pyplot as plt
= [1, 1, 2, 3, 3, 5, 7, 8, 9, 10,
x 10, 11, 11, 13, 13, 15, 14, 12, 18, 18]
=[0,5,10,15,20], cumulative=True)
plt.hist(x, bins0,5,10,15,20])
plt.xticks([ plt.show()
import matplotlib.pyplot as plt
= [1, 1, 2, 3, 3, 5, 7, 8, 9, 10,
x 10, 11, 11, 13, 13, 15, 14, 12, 18, 18]
=[0,5,10,15,20], density=True)
plt.hist(x, bins0,5,10,15,20])
plt.xticks([ plt.show()
Wykres warstwowy
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
123)
np.random.seed(
= pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df
df.plot.area() plt.show()
Wykres pierścieniowy
import matplotlib.pyplot as plt
import numpy as np
345)
np.random.seed(= np.random.randint(20, 100, 6)
data = sum(data)
total = data/total*100
data_per = (0.2, 0, 0, 0, 0, 0)
explode = explode, labels = [round(i,2) for i in (list(data_per))])
plt.pie(data_per, explode = plt.Circle( (0,0), 0.7, color='white')
circle =plt.gcf()
p
p.gca().add_artist(circle) plt.show()
Wykresy w przestrzeni
Helisa
\[\begin{cases} x=a\cos (t) \\ y=a\sin(t) \\ z=at \end{cases}\]
import numpy as np
import matplotlib.pyplot as plt
= plt.figure()
fig = plt.axes(projection='3d')
ax = np.linspace(0, 15, 1000)
t = 3
a = a * np.sin(t)
xline = a * np.cos(t)
yline = a * t
zline
ax.plot3D(xline, yline, zline) plt.show()
Torus
\[p(\alpha,\ \beta)=\Big((R+r\cos \alpha)\cos \beta,\ (R+r\cos \alpha)\sin \beta,\ r\sin \alpha\Big)\]
import numpy as np
import matplotlib.pyplot as plt
= plt.figure()
fig = plt.axes(projection='3d')
ax = 1
r = 5
R = np.arange(0, 2 * np.pi, 0.1)
alpha = np.arange(0, 2 * np.pi, 0.1)
beta = np.meshgrid(alpha, beta)
alpha, beta = (R + r * np.cos(alpha)) * np.cos(beta)
x = (R + r * np.cos(alpha)) * np.sin(beta)
y = r * np.sin(alpha)
z
ax.plot_wireframe(x, y, z) plt.show()
Źródło:
- https://www.geeksforgeeks.org/bar-plot-in-matplotlib/
- Dokumentacja https://matplotlib.org/
- https://datatofish.com/plot-histogram-python/
- https://jakevdp.github.io/PythonDataScienceHandbook/04.12-three-dimensional-plotting.html