Python matplotlib.pyplot – jak generować wykresy? #1

Python matplotlib.pyplot - jak generować wykresy? #1

Poziom trudności
1/5

Często zdarza się, ze zebrane dane chcemy w jakiś sposób zaprezentować. Jedną z bardziej czytelnych form prezentacji są wykresy. Python posiada bibliotekę, dzięki której generacja wykresów może być banalnie prosta. Mowa tu o bibliotece matplotlib. W tym artykule przedstawię jeden z najszybszych sposób na stworzenie wykresu przy użyciu Pythona.

Instalacja


Przy instalacji nie napotkamy żadnych problemów, gdyż posłużymy się popularnym programem pip.

pip install matplotlib

Testując inne sposoby generacji wykresów, często napotykałem problemy w wymaganym zewnętrznym oprogramowaniem, jednak biblioteka matplotlib nie wymaga żadnego dodatkowego oprogramowania. Jest to też jeden z powodów, dla których ją rekomenduję. Kolejnym jest jej prostota użycia.

Pierwszy wykres

Aby wygenerować wykres, za dane wsadowe, wystarczy nam tak naprawdę tylko tablica liczb, ale może po kolei. Najpierw zaimportuj część biblioteki matplotlib nazywającą się pyplot odpowiedzialnej za generację wykresów. Dla ułatwienia późniejszej pracy nazwijmy ją po prostu pyplot. W kolejnym kroku użyj z niej metody plot, wprowadzając jako parametr listę liczb, które chcesz umieścić na wykresie, będą one przypasowane automatycznie do argumentów w kolejności 0, 1, 2.. na generowanym wykresie. Następnie wywołaj metodę show.

  1. import matplotlib.pyplot as pyplot
  2. pyplot.plot([0, 2, 4, 6])
  3. pyplot.show()

To jest najszybszy sposób na wygenerowanie wykresu, gdyż wystarczy wywołać te 3 linijki, by uzyskać poniższy wykres. Jeżeli używamy tylko jednej listy jako argument dane automatycznie zostaną przypisane do osi Y.

Python matplotlib.pyplot   jak generować wykresy? #1 image

Oś X

Aby przypisać opisać zarówno oś y i x, wprowadź dwie listy o równej liczbie zmiennych, do metody plot. Pierwsza lista jako argument będzie w tym wypadku osią x, zaś kolejna lista osią y. Dodatkowo żeby opisać osie, wprowadź nazwę osi y, wywołując funkcję ylabel, natomiast funkcję xlabel, aby opisać oś x:

  1. import matplotlib.pyplot as pyplot
  2. pyplot.plot([0, 2, 4, 6], [1, 2, 3, 4])
  3. pyplot.ylabel('example Y')
  4. pyplot.xlabel('example X')
  5. pyplot.show()

Niewielkim nakładem pracy uzyskujemy wykres, z wszystkimi danymi, jakimi potrzebujemy w danym momencie:

Python matplotlib.pyplot   jak generować wykresy? #1 image

Przykłady wykresów

Dostępne są różne rodzaje wykresów, które dodatkowo można generować w jednym oknie jednocześnie – na jednym wykresie lub każdy z osobna. Poniżej przedstawiam najczęściej wykorzystywane wykresy – liniowy (metoda plot()), punktowy (metoda scatter()) i słupkowy (metoda bar()).

  1. import matplotlib.pyplot as pyplot
  2. names = ['q', 'w', 'e', 'r']
  3. values = [1, 2, 3, 5]
  4. pyplot.bar(names, values)
  5. pyplot.scatter(names, values)
  6. pyplot.plot(names, values)
  7. pyplot.show()
Python matplotlib.pyplot   jak generować wykresy? #1 image

Niestety wszystkie wykresy są narysowane na jednej osi współrzędnych. Jeżeli chcemy, aby pojawiły się podczas jednej generacji, ale na różnych osiach, można użyć metody subplot(). Wpisujemy w niej 3 cyfrowy int. Nie brzmi to intuicyjnie, ale kolejne cyfry tworzą siatkę i umiejscowienie danego wykresu. Pierwsza cyfra oznacza ilość wierszy, druga cyfra ilość kolumn, ostatnia zaś indeks. Tajemniczy indeks, w którym chcemy umiejscowić nasz wykres, obliczamy z mnożenia liczby wierszy i kolumn. Następnie wyznaczamy od lewej do prawej kolejno po utworzonej siatce. Poniżej przykład dla subplot(234) – czyli dwóch wierszy, trzech kolumn i indeksu cztery:

Python matplotlib.pyplot   jak generować wykresy? #1 image

Teraz gdy już wiemy gdzie i jak pojawią się nasze wykresy, przystąpmy więc do wdrożenia powyższej wiedzy w kod Pythona dla trzech wykresów:

  1. import matplotlib.pyplot as pyplot
  2. names = ['q', 'w', 'e', 'r']
  3. values = [1, 2, 3, 5]
  4. pyplot.subplot(224)
  5. pyplot.bar(names, values)
  6. pyplot.subplot(222)
  7. pyplot.scatter(names, values)
  8. pyplot.subplot(121)
  9. pyplot.plot(names, values)
  10. pyplot.show()

W powyższym przykładzie wykres liniowy oznaczony 121 informuje nas, że dzieli on siatkę na jeden wiersz i dwie kolumny. Jego indeks to 1 więc znajdzie się po lewej stronie rozciągnięty na całą wysokość generowanego plotu. Wykresy punktowy i słupkowy są oparte na siatce 2 na 2. Oznacza to, że ich wysokości będą jedną drugą plota. Są umiejscowione kolejno na drugiej i czwartek pozycji. Ten przykład powinien w łatwy sposób zobrazować, jak można rozmieszczać wykresy przy jednej generacji:

Python matplotlib.pyplot   jak generować wykresy? #1 image

Oczywiście wykresy mogą wyglądać dużo ciekawiej i być bardziej skomplikowane niż na powyższych rysunkach, ale o tym w kolejnych odsłonach serii Python matplotlib.pyplot – jak generować wykresy?

Python matplotlib.pyplot   jak generować wykresy? #1 image

Dodaj komentarz