Laboratorium 3

Marek Kocińki & Anna Borowska-Terka

Podział okna graficznego na kilka części. Biblioteka Matplotlib [19,20,21.03.2018]

Zadania do wykonania

  1. Zmodyfikuj dowolne wykresy na przykład z instrukcji do Laboratorium nr 1. Zmień odpowiednio następujące elementy graficzne:
    • dla funcji plot() :
      • kolor i grubość linii,
      • kolor i kształt znaczników,
      • dodaj legendę oraz linie siatki,
      • dodaj nazwy osi oraz tytuł wykresu,
      • zmień rozmiar czcionek i styl (pogrubienie, kursywa) w opisach wykresu,
    • dla funkcji imshow() :
      • zmień mapę kolorów, rodzaj zastosowanej interpolacji oraz położenie początku obrazu (usytułowanie współrzędnej (0,0)).
  2. Napisz funkcję wyswietl0(zmienna) , która w zależnośći od przekazanego argumentu (wektor, macierz) odpowiednio zwizualizuje dane. Uzyskamy wykres lub obraz.
  3. Zmodyfikuj funkcję wyswietl1(zmienna) tak aby istniała możliwość podania nazw osi OX i OY oraz tytułu wykresu.
  4. Zapoznaj się z funkcją subplot(...) z pakietu Matplotlib. Napisz funkcję wyswietl6(lista_zmiennych) ktora wyswietla 6 wykresów (obrazow) w dwóch wierszach i trzech kolumnach.
  5. Zabezpiecz funkcję aby odpowiednio "zareagowała" gdy podamy większą liczbę danych, niż można wyświetlić np. 8.
  6. Zmodyfikuj funkcję wyswietl6(...) tak aby można było przekazac tytuł oraz nazwy osi każdego wykresu z osobna.
  7. Dodaj tytuł całego okna graficznego (dla wszystkich wykresów). Zastosuj funkcje plt.suptitle() .
  8. Zapoznaj się z dzialaniem funkcji plt.subplots_adjust(...) . Zmień jej parametry aby powiększyć przestrzeń na tytył okna graficznego oraz dostosuj odpowiednio odstępy (pionowe i poziome) pomiędzy wykresami.
  9. Zmodyfikuj funkcję z zadania 5, tak aby podać tytuły osi OX, OY wykresów, dla każdego podwykresu, np. za pomocą zmiennych typu "lista".
  10. Zmodyfikuj funkcję z zadania 9 z wykorzystaniem jednej pętli for.

Wybrane zagadnienia z laboratorium

Zmiana sposobu wyświetlania wyników (wewnątrz dokumentu i w oknie zewnętrznym)

In [1]:
#wyswietlanie w dokumencie
%matplotlib inline
# wyswietlanie w oknie zewnetrznym 
#%matplotlib

Wczytanie potrzebnych pakietów

In [2]:
import numpy as np
import  scipy.misc as misc
import matplotlib.pyplot as plt
import pp_lab_3 as lab3

Dane testowe

In [3]:
a = np.array([1,2,3,4,3,2,1])
b = misc.ascent()
c = misc.face()

zadanie 2:

def wyswietl0(zmienna):

"""
Funkcja odpowiednio wizualizuje wektor lub macierz 2D. W przypadku zmiennej o innym wymiarze lub innego typu niż wektor (macierz 1D) lub macierz 2D użytkownik powinien otrzymać informację, że takiej zmiennej nie jeszcze nie potrafimy wyświetlić :)
[03.2016]

Pamiętaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie ciało funkcji, której argumentem może być wektor, macierz wielowymiarowa lub zmienna jeszcze innego typu.
Funkcja ma odpowiednio zwizualizować zmienną w zależności od jej typu, ewentualnie wypisać informacje o niemożliwości wizualizacji zmiennej.

zadanie 3:

def wyswietl1(zmienna,tytx, tyty,tyt):

"""
Funkcja wizualizuje/wykreśla wektor lub macierz 2D. W przypadku zmiennej innej niż wektor/macierz 2D, wypisuje informacje, że tego typu zmiennej nie umiemy na razie wykreślić :)
Dodatkowo funkcja umożliwia podanie nazw osi OX i OY oraz tytułu wykresu.
[03.2016]

Pamiętaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie ciało funkcji, której argumentem może być wektor, macierz wielowymiarowa lub zmienna jeszcze innego typu.
Funkcja ma odpowiednio zwizualizować zmienną w zależności od jej typu, ewentualnie wypisać informacje o niemożliwości wizualizacji zmiennej.
Funkcja ma umożliwiać podanie nazw osi OX i OY oraz tytułu wykresu i je prawidłowo umieścić na wykresie wektora/macierzy.
In [4]:
# testujemy dzialanie napisanej fukncji
lab3.wyswietl1(a,'os X','os Y','Tytul')
plt.show()
In [5]:
lab3.wyswietl1(b,'tytx','tyty','tyt')
In [6]:
lab3.wyswietl1(c,'tytx','tyty','tyt')
Tego nie obslugujemy!

Pytanie kontrolne:

Użyj funkcji plot() do wyświetlenia zmiennych: b i c .

Czemu w przypadku zmiennej b funkcja wyswietl1() wyswietlila obrazek, a w przypadku zmiennej c otrzymaliśmy komunikat o niemożliwości wyświetlenia zmiennej?

In [7]:
# Losujemy 10 liczb z przedziału <0,1)
np.random.rand(10)
Out[7]:
array([ 0.1169331 ,  0.07152758,  0.92457683,  0.01230026,  0.35147302,
        0.98830689,  0.70504167,  0.4382828 ,  0.70358153,  0.435838  ])

Funkcja wyswietla 6 zestawów danych w jednym oknie graficznym:

zadanie 4:

def wyswietl6():

"""
Funkcja wyświetla 6 różnych zestawów danych w jednym oknie graficznym. 
[03.2016]

Pamiętaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie ciało funkcji wyświetlającej 6 różnych zestawów danych w jednym oknie graficznym.
Obrazy powinny zostać wyświetlone w dwóch wierszach i trzech kolumnach. Skorzystaj z funkcji subplot(...) z pakietu Matplotlib. Do wygenerowania 6 różnych zestawów danych wykorzystaj znaną Ci funkcję random()
In [8]:
# testujemy
lab3.wyswietl6()

Dodajemy zabezpieczenie przed nieprawidłową liczbą podanych zmiennych

zadanie 5:

def wyswietl6_lista(lista_zmiennych):

"""
Funkcja wyświetla w jednym oknie graficznym 6 różnych zestawów danych, podanych jako argument funkcji. Funkcja zawiera warunek sprawdzający, czy lista_zmiennych posiada odpowiednią liczbę zmiennych, aby móc je wyświetlić.

[03.2016]

Pamiętaj: to jest miejsce na Twój opis działania funkcji. 
"""

Tutaj napisz samodzielnie ciało funkcji - definicję funkcji z zadania 4 rozszerz o zabezpiecznie przed nieprawidłową liczbą podanych zmiennych.
Podaj tytuł globalny całego wykresu - w tym celu użyj polecenia plt.suptitle()
In [9]:
a1 = np.array([1,2,3,4])
a2 = np.array([4,3,2,1])
a3 = np.random.rand(6)
a4 = a3[::-1]
a5 = a3 * 5
a6 = (a3 + 10) / 2.5

lista_zm = [a1,a2,a3,a4,a5,a6]
In [10]:
lab3.wyswietl6_lista(lista_zm)
In [11]:
lab3.wyswietl6_lista([a1,a2,a3])
Zla dlugosc listy !!!
 Wychodzimy z funkcji!!!!

Praca samodzielna

  1. Napisz funkcje ktore odpowiednio wyswietlaja zmienną (wektor lub macierz). Funkcje umożliwiają nadanie tytułów oraz nazwanie osi OX i OY każdego wykresu i całego okana graficznego
    • wyswietl1(...) - funkcja wyswietla jeden zestaw danych,
    • wyswietl2(...) - funkcja wyswietla dwa zestawy danych obok siebie,
    • wyswietl3(...) - funkcja wyswietla trzy zestawy danych w jednym wierszu,
    • wyswietl4(...) - funkcja wyswietla 4 zestawy danych w dwóch wierszach i dwóch kolumnach.