Matplotlib - wizualizacja danych

Podobne dokumenty
Matplotlib - wizualizacja danych

Wprowadzenie do pakietu Pylab/Matplotlib na przykładach

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Podstawowe operacje graficzne.

Wizualizacja funkcji w programie MATLAB

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

TWORZENIE WYKRESÓW (1)

Wykresy i interfejsy użytkownika

zajęcia 2 Definiowanie wektorów:

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

FORMUŁY AUTOSUMOWANIE SUMA

Przekształcanie wykresów.

Techniki wstawiania tabel

Po naciśnięciu przycisku Dalej pojawi się okienko jak poniżej,

Podstawy biblioteki Matplotlib

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

SCILAB. Wprowadzenie do Scilaba:

Elementy okna MatLab-a

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Środowisko R wprowadzenie c.d. Wykład R2; Struktury danych w R c.d.

Wykorzystanie programów komputerowych do obliczeń matematycznych

Wprowadzenie do Python

Tytuł: GRAPHER Podręcznik użytkownika ISBN: Autor: Zbigniew Galon Rok wydania: 2014 Stron: 500 Wydawca: Gambit COiS Sp. z o.o.

Graficzne opracowanie wyników pomiarów 1

Ćwiczenie 6. Transformacje skali szarości obrazów

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

Grafika w Matlabie. Wykresy 2D

Edytor tekstu OpenOffice Writer Podstawy

Qtiplot. dr Magdalena Posiadała-Zezula

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

Ćwiczenie 1 Automatyczna animacja ruchu

1 Programowanie w matlabie - skrypty i funkcje

Obsługa programu Soldis

Metody i analiza danych

, h(x) = sin(2x) w przedziale [ 2π, 2π].

EXCEL wprowadzenie Ćwiczenia

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Lekcja 1: Origin GUI GUI to Graficzny interfejs użytkownika (ang. GraphicalUserInterface) często nazywany też środowiskiem graficznym

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

1) Podstawowe obliczenia. PODSTAWY AUTOMATYKI I ROBOTYKI Laboratorium. Wykonał: Łukasz Konopacki Sala 125. Grupa: poniedziałek/p,

Formatowanie komórek

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

4.2. Ustawienia programu

3.7. Wykresy czyli popatrzmy na statystyki

Badanie diody półprzewodnikowej

POMIARY WIDEO W PROGRAMIE COACH 5

7. Estymacja parametrów w modelu normalnym( ) Pojęcie losowej próby prostej

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

Wstęp Pierwsze kroki Pierwszy rysunek Podstawowe obiekty Współrzędne punktów Oglądanie rysunku...

Stochastyczne Metody Analizy Danych. PROJEKT: Analiza kluczowych parametrów turbin wiatrowych

Matlab Składnia + podstawy programowania

Tworzenie i edycja dokumentów w aplikacji Word.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Arkusz kalkulacyjny MS Excel 2010 PL.

Animacje z zastosowaniem suwaka i przycisku

> x <-seq(-2*pi, 2*pi, by=0.5) > plot(x, sin(x), type="b",main="wykres funkcji sin(x) i cos(x)", col="blue") > lines(x, cos(x), type="l",col="red")

Ćwiczenie 1 - Arkusze kalkulacyjne

1. Wybierz polecenie rysowania linii, np. poprzez kliknięcie ikony W wierszu poleceń pojawi się pytanie o punkt początkowy rysowanej linii:

Zaznaczanie komórek. Zaznaczenie pojedynczej komórki polega na kliknięciu na niej LPM

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

EXCEL. Rozpoczynanie pracy z programem EXCEL. Interfejs EXCEL. Zaznaczanie komórek

Edytor tekstu OpenOffice Writer Podstawy

Ćwiczenie 1 Galeria zdjęć

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy MATLABA, cd.

Odczytywanie i zapisywanie obrazów rastrowych do plików, operacje punktowe na tablicach obrazów

Metodyka wykonania kartogramu z podziałem na klasy wg punktów charakterystycznych wraz z opracowaniem kartogramicznej legendy.

Krótki przewodnik po Open Calc

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

PRZEWODNIK DO NARYSOWANIA HARMONOGRAMU WZORCOWEGO

Wykresy. Lekcja 10. Strona 1 z 11

Grafika komputerowa. Zajęcia IV

Następnie przypominamy (dla części studentów wprowadzamy) podstawowe pojęcia opisujące funkcje na poziomie rysunków i objaśnień.

author: Andrzej Dudek

Laboratorium Cel ćwiczenia Ćwiczenie ma na celu praktyczne przedstawienie grafiki 3D.

MATPLOTLIB. WPROWADZENIE. WYKRESY 2D

ARKUSZ KALKULACYJNY komórka

Przenoszenie, kopiowanie formuł

Padlet wirtualna tablica lub papier w Internecie

Praca z tekstem: WORD Listy numerowane, wstawianie grafiki do pliku

Maskowanie i selekcja

Sposoby opisu i modelowania zakłóceń kanałowych

Ćwiczenia Skopiować do swojego folderu plik cwiczenia-kl.ii.xls, a następnie zmienić jego nazwę na imię i nazwisko ucznia

BIBLIOTEKA NUMPY, CZĘŚĆ 1

Ćwiczenie nr 2 - Rysowanie precyzyjne

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Ćw. I Projektowanie opakowań transportowych cz. 1 Ćwiczenia z Corel DRAW

Zadanie 1. Stosowanie stylów

Rysowanie punktów na powierzchni graficznej

Transkrypt:

Spis treści 1 Matplotlib - wizualizacja danych 1.1 Wprowadzenie do pakietu Matplotlib na przykładach 1.2 Wykresy funkcji 1.2.1 y = f(x) 1.2.2 Rysujemy wykres funkcji sinus 1.2.3 Ulepszamy wykres 1.2.4 Kilka wykresów we wspólnych osiach - Pierwsza wersja 1.2.5 Kilka wykresów we wspólnych osiach - Druga wersja 1.3 Histogram (diagram liczebności) 1.3.1 Przykład bardziej zaawansowany 1.4 Wizualizacja zawartości tablicy dwuwymiarowej 1.5 Plik graficzny jako źródło danych 1.6 Wiele wykresów w jednym oknie 1.7 Ćwiczenia Matplotlib - wizualizacja danych Wprowadzenie do pakietu Matplotlib na przykładach Pakiet Matplotlib bazuje na pakiecie numerycznym Numpy i korzysta z obiektów w nim zawartych. Pokażemy, jak z jego pomocą rysować różnorodne wykresy prezentujące graficznie przetwarzane dane i wyniki obliczeń. Zamiast wyliczać zawartość pakietu pokażemy ich użyteczność na przykładach. Zaczniemy od prostych i będziemy po drodze omawiać zastosowane w nich konstrukcje. Wykresy funkcji y = f(x) Prześledźmy działanie poniższego programu: x = [1,2,3] y = [4,6,5] plt.plot(x,y) Rezultat

Jak to działa? Aby skorzystać z pakietu graficznego Matplotlib importujemy go do naszego programu poleceniem import. Pod-pakiet pyplot jest jednym z paru nieco różnych interfejsów do Matplotlib - tj. sposobów wykorzystania jego funkcjonalności. Inny, też często wykorzystywany, nazywa się pylab i można go importować wprost (import pylab). Pyplot zapewnie nieco większą elastyczność, chociaż dla najprostszych przykładów - takich, jakie tu omówimy - nie ma istotnej różnicy. Wytwarzamy dwie listy x i y zawierające ciągi liczb 1, 2, 3 oraz 4, 6, 5. Funkcja plot rysuje wykres i umieszcza na nim punkty o współrzędnych zawartych w listach przekazanych jej jako argumenty. Pierwszy argument zawiera współrzędne x-owe kolejnych

punktów, a drugi argument współrzędne y-owe kolejnych punktów wykresu. Ponieważ listy mają po trzy elementy, tak więc wykres zawierać będzie trzy punkty o współrzędnych (1, 4), (2, 6) oraz (3, 5). Domyślnie punkty na wykresie łączone są ze sobą niebieską linią ciągłą. To oczywiście można zmienić - dodając opcjonalne parametry do wywołania plot można uzyskać linię o innym kolorze, linię przerywaną, z kropek, albo w ogóle brak linii - a za to np. duże kropki (trójkąty, gwiazdki,...) w miejscach odpowiadających punktom danych. Po wywołaniu funkcji plot wykres nie pokazuje się jeszcze na ekranie. Aby go pokazać, używamy funkcji show. Wykres pojawia się na ekranie w osobnym oknie, a Python czeka z wykonywaniem kolejnych instrukcji do momentu zamknięcia okna z wykresem. W okienku wykresu mamy kilka guzików (po lewej stronie na dole). Służą one do manipulowania wyglądem rysunku. Guzikiem z krzyżykiem możemy zmniejszać/zwiększać skalę na osiach (wciskając prawy guzik myszy i przesuwając kursor po obrazku) oraz przesuwać cały wykres (wciskając lewy guzik myszy i przesuwając kursor po obrazku). Guzik z okienkiem i strzałkami pozwala także zmieniać rozmiar i położenie osi wykresu wewnątrz okna wybierając właściwe wartości. Guzik z domkiem przywraca wyjściowe ustawienia rysunku. Guzik z obrazkiem dyskietki (czy ktoś jeszcze wie, co to takiego?) pozwala zachować wykres (jego aktualny stan, czyli z uwzględnieniem dokonanych interaktywnie modyfikacji) jako plik graficzny jednego z kilku formatów. Rysujemy wykres funkcji sinus import numpy as np x = np.arange(0.0, 2.0, 0.01) y = np.sin(2.0*np.pi*x) plt.plot(x,y) Rezultat

Jak to działa? Oprócz funkcji z Matplotlib będziemu tu odwoływać się również wprost do elementów z pakietu NumPy. Funkcja arange jest podobna do standardowej funkcji range wytwarzającej określone sekwencje liczb w postaci listy. Funkcja arange zamiast listy wytwarza tablicę zawierającą ciąg liczb zmiennoprzecinkowych zaczynający się od pierwszego podanego argumentu funkcji arange (u nas 0.0), a kończący się przed drugim argumentem (tradycyjnie, ciąg wynikowy nie zawiera wartości podanej jako drugi argument, u nas 2.0). Różnica między elementami wytworzonego ciągu domyślnie wynosi 1, ale jeśli podamy funkcji arange trzeci argument, to definiuje on nową różnicę ciągu, u nas wynosi on 0.01. Tak więc zmienna x jest tablicą-wektorem zawierającą ciąg liczb od 0 do 1,99 co 0,01 (czyli 0, 0,01, 0,02,..., 1,98, 1,99). Funkcja sin służy do obliczania wartości funkcji sinus dla argumentu podanego w radianach. A co u

nas jest argumentem tej funkcji? Wyrażenie będące argumentem zawiera mnożenie liczby 2.0 przez pi (pochodzące z pakietu NumPy), a następnie mnożenie wyniku przez tablicę x. Zmienna pi zawiera przybliżoną wartość matematycznej stałej π 3,1415926... Mnożenie liczby i tablicy, jak wiemy z poprzedniego punktu, daje w wyniku tablicę. Oznacza to, że argumentem funkcji sin jest nie liczba, ale tablica! Taka możliwość jest przewidziana przez twórców pakietu Numpy; wynikiem wywołania funkcji jest wtedy również tablica. Jest ona tej samej długości co tablica będąca argumentem wywołania funkcji. Tak więc zmienna y zawiera ciąg wartości funkcji sinus policzonych dla wartości zawartych w zmiennej x pomnożonych każda przez 2π (czyli sin(2π 0), sin(2π 0,01), sin(2π 0,02),..., sin(2π 1,98), sin(2π 1,99)). Funkcja plot(x,y) narysuje zestaw punktów o współrzędnych (0, sin(2π 0)), (0,01, sin(2π 0,01)), (0,02, sin(2π 0,02)),..., (1,98, sin(2π 1,98)), (1,99, sin(2π 1,99)) połączonych niebieską linią. Ulepszamy wykres import numpy as np x = np.arange(0.0, 2.0, 0.01) y = np.sin(2.0*p.pi*x) plt.plot(x,y,'r:',linewidth=6) plt.xlabel('czas') plt.ylabel('pozycja') plt.title('nasz pierwszy wykres') plt.grid(true) Rezultat

Jak to działa? W porównaniu z poprzednim przykładem pojawiło się na wykresie kilka drobnych zmian i ozdobników. W funkcji plot pojawiły się dwa nowe parametry: 1. 'r:' ten parametr steruje wyglądem rysowanej linii wykresu. Pierwsza litera tego napisu określa kolor linii (na przykład r: czerwony, b: niebieski, g: zielony, y: żółty, k: czarny). Drugi znak napisu określa wygląd samej linii (np.-: ciągła, :: kropkowana, o: okrągłe punkty bez linii, +: krzyżyki bez linii, itd.). 2. linewidth=6 ten parametr zmienia grubość rysowanej linii. Dodaliśmy też wywołania funkcji xlabel i ylabel. Ich argumentami są napisy, które pojawią się jako opisy osi, odpowiednio poziomej i pionowej. Wywołanie funkcji title wypisuje przekazany jej napis jako tytuł całego wykresu.

Funkcja grid dorysowuje siatkę prostokątną na wykresie w wybranych punktach opisujących wartości na osiach wykresu. Punkty, w których wybierane są wartości opisane na osiach (ang. tick) są wybierane automatycznie (oczywiście jeśli chcemy, możemy zmieniać ich położenie i opisy odpowiednią funkcją, powiemy o tym później). Kilka wykresów we wspólnych osiach - Pierwsza wersja import numpy as np x = np.arange(0.0, 2.0, 0.01) y1 = np.sin(2.0*p.pi*x) y2 = np.cos(2.0*p.pi*x) plt.plot(x,y1,'r:',x,y2,'g') plt.legend(('dane y1','dane y2')) plt.xlabel('czas') plt.ylabel('pozycja') plt.title('wykres ') plt.grid(true) Rezultat:

Jak to działa? W jednym układzie współrzędnych możemy narysować wiele wykresów. Robimy to podając w jednym poleceniu plot kolejno zestawy parametrów opisujące poszczególne linie: współrzędne x, współrzędne y, sposób wykreślania linii. Aby łatwo identyfikować linie można dodać legendę poleceniem legend(). Sposób kontrolowania wyglądu i położenia legendy: help(plt.legend) (oczywiście po zaimportowaniu modułu: ). Kilka wykresów we wspólnych osiach - Druga wersja import numpy as np x = np.arange(0.0, 2.0, 0.01) y1 = np.sin(2.0*p.pi*x) y2 = np.cos(2.0*p.pi*x) y = y1*y2 l1, = plt.plot(x,y,'b')

l2,l3 = plt.plot(x,y1,'r:',x,y2,'g') plt.legend((l2,l3,l1),('dane y1','dane y2','y1*y2')) plt.xlabel('czas') plt.ylabel('pozycja') plt.title('wykres ') plt.grid(true) Rezultat: Jak to działa? Wykresy możemy dodawać do współrzędnych kolejnymi poleceniami plot. Funkcja plot zwraca listę linii. Notacja l1, = plt.plot(x,y,'b') wydobywa z listy pierwszą linię (Gdyby po l1 nie było przecinka to l1 byłoby listą zawierającą jeden obiekt klasy linia ). Dzięki nazwaniu poszczególnych obiektów linii możemy kontrolować ich kolejność (i obecność) na legendzie.

Histogram (diagram liczebności) zliczenia = [, 1, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 7] plt.hist(zliczenia) Rezultat: Jak to działa? Do zmiennej zliczenia przypisujemy sekwencję z ręcznie podanymi wartościami. Zakres zmienności badanych zliczeń (odkładany na osi X) zostanie podzielony na przedziały (ang. bin) o jednakowej szerokości ; domyślnie będzie ich 10. Funkcja hist() zlicza wystąpienia wartości w

binach i rysuje histogram. Funkcja ta zwraca krotkę (array ze zliczeniami, array z binami, lista zawierająca prostokąty, które histogram rysuje, tzw. obiekty Patch). Porządek wartości, których histogram zostanie stworzony nie ma znaczenia. Mogą one oczywiście być umieszczone również w tablicy NumPy. Przykład bardziej zaawansowany Wyjaśnienie działania znajduje się w komentarzach do programu: import numpy as np import matplotlib.mlab as mlab mi, sigma = 100, 15 x = mi + sigma * np.random.randn(10000) # numpy.random.randn zwraca array z liczbami pseudolosowymi # pochodzącymi z rozkładu normalnego o średniej 0 i wariancji 1 # przemnożenie przez odchylenie standandardowe sigma i dodanie śreniej mi # transformuje rozkład do rozkładu normalnego o średniej mi i wariancji sigma**2 n, bins, patches = plt.hist(x, 50, normed=true, facecolor='green', alpha=0.75) # Tu w jawny sposób odbieramy zwracane przez plt.hist obiekty # Zmieniamy też: # - ilość binów na 50 # - normujemy histogram do jedności # - ustalamy kolor prostokątów na zielony # - ustawiamy (nie)przezroczystość prostokątów na 0.75 bincenters = 0.5*(bins[1:]+bins[:-1]) # wytwarzamy array z centrami binów korzystając z granic binów # zwróconych przez plt.hist w macierzy bins y = mlab.normpdf( bincenters, mi, sigma) # obliczamy wartości w normalnym rozkładzie gęstości prawdopodobieństwa # o średniej mi i wariancji sigma**2 dla wartości bincenters l = plt.plot(bincenters, y, 'r--', linewidth=1) # do histogramu dorysowujemy linię Rezultat:

Wizualizacja zawartości tablicy dwuwymiarowej import numpy as np A = np.arange(20) X, Y = np.meshgrid(a, A) Z = X + Y plt.imshow(z, cmap='hot', interpolation='none') plt.colorbar() Wynik:

Jak można się domyślić, parametr cmap wywołania funkcji imshow odpowiada za odwzorowanie pomiędzy wartościami elementów tablicy a barwami - jest wiele predefiniowanych takich odwzorowań (colormaps), opisanych w dokumentacji. Za pomocą wartości 'none' parametru interpolation wyłączyliśmy,,wygładzanie" obrazu, inne możliwe wartości umożliwiają wybór różnych algorytmów wygładzania. Wywołanie colorbar dostarcza paska wizualizującego odpowiedniość pomiędzy wartościami liczbowy i barwami. Plik graficzny jako źródło danych import numpy as np img = plt.imread('reading-girl.jpg') plt.imshow()

Wynik: Wynikiem wywołania imread jest tablica o kształcie (wysokość, szerokość, 3) zawierająca dla każdego piksela obrazu wartości jego składowych RGB, tj. natężeń barw: czerwonej, zielonej, i niebieskiej - jako liczby w zakresie od 0 do 255 włącznie. Oczywiście na tej tablicy możemy wykonywać najróżniejsze operacje, analizując treść obrazu czy przekształcając go. Przykładowo: img1 = img[:400, -400:] # przycinam obraz do kształtu 400x400 pikseli img2 = img1.sum(axis=2) img3 = img2 / img2.max() plt.imgshow(img3, cmap='bone')

Wynik: plt.hist(img3.flatten(), bins=100) Wynik:

Wykonaliśmy w ten sposób histogram opisujący rozkład natężenia pikseli obrazka. Wiele wykresów w jednym oknie Ćwiczenia Spróbuj znaleźć sposób przekształcenia obrazka takiego, jak poniższy portret autora skryptu:

do postaci przypominającej poprzednie strona główna od początku ;) --RobertJB (dyskusja) 14:05, 10 kwi 2017 (CEST)