Python matplotlib.pyplot – jak generować wykresy? #3: Strzałki i opisy

Gdy znane z poprzedniej części serii o matplotlib.pyplot stworzone wykresy chcemy wzbogacić o dodatkowe opisy lub oznaczyć strzałką z opisem konkretny punkt wykresu z pomocą przychodzi nam metoda annotate. Dzięki niej dokładnie zdefiniujesz wcześniej wymienione funkcjonalności.

Python matplotlib.pyplo

Python matplotlib.pyplo


Gdy wygenerowane z poprzedniej części serii o matplotlib.pyplot wykresy chcemy wzbogacić o dodatkowe opisy, lub oznaczyć strzałką z opisem konkretny punkt wykresu. Z pomocą przychodzi nam metoda annotate. Dzięki niej dokładnie zdefiniujesz wcześniej wymienione funkcjonalności.

Dodatkowy tekst na wykresie

Aby oznaczyć kluczowe informacje, posługując się metodą annotate(), możemy wygenerować na przykład tekst na wykresie. Jako pierwszy argument funkcji podajemy opis, który pojawi się na wykresie. Następnie argument xy, który jest krotką dwóch wartości, współrzędnych, gdzie ma znaleźć się wcześniej wpisany tekst.

import matplotlib.pyplot as pyplot
 
x = ['q', 'w', 'e', 'r']
y = [1, 2, 3, 5]
lines = pyplot.plot(x, y, "r--")
 
pyplot.annotate('this point',  xy=(1, 3))
 
pyplot.show()

Oznaczenie strzałką ważnych informacji na wykresie

Metoda annotate() oprócz opisu, dodatkowo umożliwia generowanie strzałki wskazującej konkretny punkt. Zaczynamy podobnie jak w poprzednim przykładzie, jako pierwszy argument podajemy opis punktu, który pojawi się na wykresie. Kolejnym xytext podajemy jako współrzędne w formie krotki, gdzie ma się rozpoczynać strzałka i jednocześnie pojawić opis wskazywanego punktu. Argument xy różni się od standardowego użycia bez strzałki, gdyż w tym wypadku xy jest krotką dwóch wartości, współrzędnych punktu, na który ma wskazać strzałka. Ostatnim wymaganym argumentem jest arrowprops. Bez niego pojawi się tylko opis, z pominięciem strzałki. Przyjmuje on słownika z parametrami określającymi wygląd strzałki. Słownik może być pusty – wtedy strzałka będzie się składać z samych domyślnych wartości. W poniższym przykładzie zmieniam kolor wypełniania strzałki na zielony – kolory możemy oznaczać tak jak kolory wykresu przytoczone w poprzednim artykule:

import matplotlib.pyplot as pyplot
x = ['q', 'w', 'e', 'r']
y = [1, 2, 3, 5]
lines = pyplot.plot(x, y, "r--")
 
pyplot.annotate('this point',
                xy=(2, 3),
                xytext=(1, 4),
                arrowprops=dict(facecolor='g')
                )
 
pyplot.show()

Wygląd strzałki

Strzałka,o prócz koloru, może także przyjmować różne style. Aby zmienić wygląd strzałki, użyj klucza arrowstyle  w słowniku arrowprops. Klucz ten może przyjmować różne wartości typu string. Jedną z nich może by ‚->’ i oznacza ona cienką strzałkę:

import matplotlib.pyplot as pyplot
 
x = ['q', 'w', 'e', 'r']
y = [1, 2, 3, 5]
lines = pyplot.plot(x, y, "r--")
 
pyplot.annotate('this point',
                xy=(2, 3),
                xytext=(1, 4),
                arrowprops={'arrowstyle':'->'}
                )
 
pyplot.show()

Strzałka posiada wiele możliwych wyglądów:

  • „->” wąska strzałka
  • „-” linia bez strzałki
  • „-[” zbiór punktów, przedział
  • „|-|” odcinek
  • „<-” strzałka zwrócona w przeciwnym kierunku (na przykład w stronę napisu)
  • „<->” strzałka obustronna
  • „wedge” strzałka „igła”
  • „fancy” strzałka stylizowana

Ostatnie dwa style strzałek (wedge i fancy) mogą być nie zrozumiałe, więc zaprezentuję je poniżej. Mogę to zrobić jednocześnie, gdyż na jednym wykresie może znajdować się wiele dodatkowych oznaczeń jednocześnie.

import matplotlib.pyplot as pyplot
 
x = ['q', 'w', 'e', 'r']
y = [1, 2, 3, 5]
lines = pyplot.plot(x, y, "r--")
 
pyplot.annotate('fancy arrow',
                xy=(2, 3),
                xytext=(1, 4),
                arrowprops={'arrowstyle':'fancy'}
                )
 
pyplot.annotate('wedge arrow',
                xy=(2, 3),
                xytext=(2, 1.5),
                arrowprops={'arrowstyle':'wedge'}
                )
 
pyplot.show()

Teraz możesz oznaczyć i opisać każdy kluczowy punkt, przedział lub zbór punktów na generowanym wykresie. W kolejnej odsłonie serii Python matplotlib.pyplot – jak generować wykresy? zaprezentuję jak wygenerować wykres z legendą.

close

Newsletter