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(=True) plt.show(block
36 Matplotlib - dodatki cz.2.
36.1 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
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=True) plt.show(block
36.2 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
=True) plt.show(block
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
=True) plt.show(block
36.3 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(
=True) plt.show(block
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
=True) plt.show(block
36.4 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', r'$\pi$', r'$2\pi$', r'$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
=True) plt.show(block
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(=True) plt.show(block
36.5 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
=True) plt.show(block
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(=True) plt.show(block