Matplotlib Krzysztof Katarzyński Centrum Astronomii UMK Ten człowiek nie jest zwyczajnym człowiekiem. To F.G. Superman. Niewyróżniajacy się niczym wśród innych, bogobojnych obywateli. Jednak F.G. Superman ma podwójna osobowość. W nagłym wypadku, w każdej chwili, w każdym miejscu gotów jest stać się... MECHANIKIEM ROWEROWYM! Latajacy Cyrk Monty Pythona
Matplotlib Moduł matplotlib (matplotlib.org) służy do wizualizacji wszelkiego rodzaju danych. Jego zaletami sia: prostota, ogromne możliwości, wieloplatformowość oraz łatwa integracja z graficznymi interfejsami użytkownika. Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 2/22
1 Wykres funkcji jednej zmiennej # MatPlotLib jest częścią pakietu PyLab, # który warto zaimportowa ć w całości aby # mie ć dost ęp do wielu dodatkowych, bardzo # uż ytecznych funkcji # tablica liczb o ró wnomiernym rozk ł adzie # opcje : zakres ( min. maks.), ilo ść punkt ów x = linspace ( -10, 10, 100) # funkcja do wyrysowania y = sin (x)* cos (x /2) plot (x, y) # rysowanie funkcji y( x) # kolejna funkcja z = sin (x)/x plot (x, z) # wyś wietlenie wykresu Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 3/22
2 Wiele funkcji jeden plot x = linspace ( -10, 10, 100) y = sin (x)* cos (x /2) z = sin (x)/x p = exp (-x **2) # wiele funkcji w jednym plocie plot (x, y, x, z, x, p) Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 4/22
3 Parametry linii i opis wykresu x = linspace ( -10, 10, 100) y = sin (x)* cos (x /2) z = sin (x)/x # grubo ść linii ( lw), kolor ( c), opis ( label ) plot (x, y, lw =3, c=" red ", label =" funkcja 1") # rodzaj linii ( ls) plot (x, z, ls=" --", c="g", label =" funkcja 2") # opis wykresu title ( u" Tytu ł") # " u" na pocz ą tku oznacza kodowanie utf -8 xlabel (u"oś-x") ylabel (u"oś-y") # legenda legend ( loc =2) # loc - numer rogu wykresu Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 5/22
4 Rozmiar, rozdzielczość i rysowanie punktów # rozmiar okna i rozdzielczo ść figure ( figsize =(12, 8), dpi =100) # 1200 x800 pikseli x = linspace ( -10, 10, 100) y = sin (x)* cos (x /2) z = sin (x)/x # punkty ( marker ) zamiast linii plot (x, y, ls="", marker ="o", markersize =5, c=" brown ") plot (x, z, ls="", marker ="+", markersize =15, c=" orange ") title (u" Tytu ł") xlabel (u"oś-x") ylabel (u"oś-y") Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 6/22
5 subplot wiele wykresów w jednym oknie figure ( figsize =(12, 8), dpi =100) # 1200 x800 pikseli x = linspace ( -2*pi, 2*pi, 100) # subplot czyli tablica wykres ów # opcje : liczba wierszy i kolumn oraz numer aktual. wykresu subplot (2, 2, 1) plot (x, sin (x)) subplot (2, 2, 2) plot (x, sin (x)/x) subplot (2, 2, 3) plot (x, exp (-x **2)) subplot (224) # można poda ć parametry bez przecink ów! plot (x, sqrt (1 -x **2)) Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 7/22
Tablica wykresów subplot(2, 2, x) 0.9 0.7 0.3 Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 8/22
6 Różne tablice figure ( figsize =(12, 8), dpi =100) # 1200 x800 pikseli x = linspace ( -2*pi, 2*pi, 100) subplot (211) # 2- wiersze, 1- kolumna, plot -1 plot (x, sin (x)) subplot (234) # 2- wiersze, 3- kolumny, plot -4 plot (x, sin (x)/x) subplot (235) # 2- wiersze, 3- kolumny, plot -5 plot (x, exp (-x **2)) subplot (236) # 2- wiersze, 3- kolumny, plot -6 plot (x, sqrt (1 -x **2)) Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 9/22
subplot(2, 1, x) oraz subplot(2, 3, x) 0.9 0.7 0.3 Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 10/22
7 Jeszcze więcej subplot() figure ( figsize =(12, 8), dpi =100) # 1200 x800 pikseli x = linspace ( -2*pi, 2*pi, 100) subplot (221) plot (x, sin (x)) subplot (422) plot (x, sin (x)/x) subplot (424) plot (x, exp (-x **2)) subplot (413) plot (x, sqrt (1 -x **2)) subplot (4, 3, 10) plot (x, x **2) subplot (4, 3, 11) plot (x, 1/ x) subplot (4, 3, 12) plot (x, cos (x *5)) Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 11/22
Złożona kombinacja subplot() 0.9 0.7 0.3 0 5 8 6 4 2 0 2 4 6 8 40 30 35 20 20 25 10 15 5 10 15 10 50 15 20 Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 12/22
8 Inne przydatne opcje cz. 1 fig = figure ( figsize =(12, 8), dpi =100) # 1200 x800 pikseli # marginesy fig. subplots_adjust ( left =0, bottom =0.1, right =, top =5, wspace =, hspace =) # inne parametry matplotlib. rc( axes, linewidth =3) # grubo ść ramki matplotlib.rc( font, family = serif, size =10) # fonty matplotlib. rc( axes, titlesize =18) # font tytu łu matplotlib. rc( axes, labelsize =14) # font opisu osi matplotlib. rc( axes, edgecolor =(2, 0.3, )) # k. ramki matplotlib. rc( axes, facecolor =(, 0.9, 0.75)) # k. tła matplotlib.rc( xtick. major, size =10) # x- kreska podzia łki matplotlib.rc( ytick. major, size =5) # y- kreska podzia łki x = linspace ( -2*pi, 2*pi, 100) Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 13/22
8 Inne przydatne opcje cz. 2 subplot (221) plot (x, sin (x), c=" red ") title (u" Tytu ł") xlabel (u"oś-x") ylabel (u"oś-y") subplot (222) plot (x, sin (x)/x, lw =3, ls=" --") title ("$y(x) = \\ frac {\\ sin x}{x}$") grid () # siatka subplot (223) plot (x, exp (-x **2), label ="$y(x)=e^{ -x ^2} $") legend ( loc =3, prop ={ size :16}) # zmiana rozmiaru legendy subplot (224) plot (x, x**2, c=" green ", ls="", marker ="*") text (-3, 30, " dodatkowy opis ") text ( -6.3, 20, u" dodatkowy duży opis ", fontsize =16) savefig ("../ pics / mpl_08. png ") # zapis do pliku Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 14/22
Marginesy, kolory, ramki, siatki, opisy itd. Tytuł y(x) = sinx x o y o x 40 35 30 dodatkowy opis 25 20 15 dodatkowy du y opis y(x) =e x2 10 5 0 Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 15/22
50 9 Mapa konturowa # przyk ł adowa funkcja def f(x,y): return exp (-x**2 -y **2/4)+\ exp ( -(x +2)**2 - y **2/2)+\ exp ( -(x -2)**2-2* y **2) n = 256 z = 3.5 x = linspace (-z, z, n) y = linspace (-z, z, n) X, Y = meshgrid (x, y) # kolory kontur ów contourf (X, Y, f(x, Y), 8) # kreski kontur ów C = contour (X, Y, f(x, Y), 8, colors = black, linewidth =1) # opisy kontur ów clabel (C, inline =1, fontsize =10) 3 2 00 0.900 0.750 0.900 0.750 0.750 0.900 1 0 1 0.150 0.300 2 3 3 2 1 0 1 2 3 savefig (" mpl_09. pdf ") Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 16/22
10 Dane w formie obrazu # przyk ł adowa funkcja def f(x,y): return exp (-x**2 -y **2/4)+\ exp ( -(x +2)**2 - y **2/2)+\ exp ( -(x -2)**2-2* y **2) n = 256 z = 3.5 x = linspace (-z, z, n) y = linspace (-z, z, n) X, Y = meshgrid (x, y) # dane jako obrazek imshow (f(x, Y), cmap =" hot ") 0 50 100 150 200 250 0 50 100 150 200 250 savefig (" mpl_10. pdf ") Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 17/22
11 Wykres 3D # importujemy wykres 3D from mpl_toolkits. mplot3d \ import Axes3D fig = figure () axe = Axes3D ( fig ) n = 40 z = 10 x = linspace (-z, z, n) y = linspace (-z, z, n) X, Y = meshgrid (x, y) # rysowana powierzchnia R = sqrt (X **2 + Y **2) Z = sin (R)/R 10 5 0 5 10 10 5 0 5 10 axe. plot_surface (X, Y, Z, rstride =1, cstride =1, cmap = hot ) savefig (" mpl_11. pdf ") Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 18/22
12 Histogram i placek f = figure ( figsize =(3, 5), dpi =100) f. subplots_adjust ( hspace =, bottom =2) subplot (211) x = randn (1000) hist (x, 50) title (" histogram ") subplot (212) x = [1, 2, 3, 4] l = map (str, x) e = [0, 0, 5, 0] pie (x, labels =l, explode =e, shadow =1) gca (). set_aspect ( equal ) title (" placek ") savefig (" mpl_12. pdf ") 70 60 50 40 30 20 10 0 histogram 4 3 2 1 0 1 2 3 3 placek 2 4 1 Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 19/22
MatPlotLib w internecie matplotlib.org strona projektu, dokumentacja i dużo przykładów www.loria.fr/~rougier/teaching/matplotlib/ proste przykłady sites.google.com/site/scigraphs/home zaawansowane przykłady Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 20/22
Lista programów 1./python/mpl_01.py 2./python/mpl_02.py 3./python/mpl_03.py 4./python/mpl_04.py 5./python/mpl_05.py 6./python/mpl_06.py 7./python/mpl_07.py 8./python/mpl_08.py 9./python/mpl_09.py 10./python/mpl_10.py 11./python/mpl_11.py 12./python/mpl_12.py Krzysztof Katarzyński Centrum Astronomii UMK Matplotlib, strona 21/22
Wszelkie prawa zastrze zone! Rozpowszechnianie oraz wykorzystywanie kursu i programów do niego dołaczonych, w cało sci lub fragmentach bez zgody autora jest zabronione!