Запознаване с една от оригиналните библиотеки за визуализация на данни на Python

Matplotlib беше един от първите инструменти, за които научих в моето пътуване в науката за данни. Бях изумен от това как позволява персонализиране на почти всяка малка част от визуализацията на данни.

От друга страна, синтаксисът му изглеждаше сложен и труден за разбиране. Знаех, че мога да направя нещо, но отне известно време, за да разбера как да го направя. Чувствах се по-удобно да работя с Matplotlib, след като научих за структурата му и как се създават графики.

В тази статия ще научим четири неща, които ще ви помогнат да разберете по-добре Matplotlib.

1. Фигура и оси

Тъй като Python е обектно-ориентиран език за програмиране, не е изненада, че всичко, което виждаме на графика на Matplotlib, е обект с тип.

Фигурите и осите са основните типове обекти, които служат като основа на сюжета. Те са известни също като типове съставни обекти. Важно е да се отбележи, че Axes не е множествено число на Axis. По този начин обектът Axes няма нищо общо с оста x или y.

Фигурата може да се разглежда като най-външния контейнер, който държи всичко заедно. Всички други обекти остават живи в този контейнер. Една фигура може да има един или повече обекти Axes. Всъщност имаме нужда от Axes обект, за да нарисуваме нещо.

Фигура може да бъде създадена с помощта на метода на фигурата на интерфейса matplotlib.pyplot.

import matplotlib.pyplot as plt
plt.figure()
plt.show()
# output
<Figure size 432x288 with 0 Axes>

Създадохме обект Фигура с размер по подразбиране. Тъй като няма обект Axes, нищо не се показва.

Нека също да добавим Axes към обекта Figure и да видим как изглежда. Ще използваме и параметъра figsize, за да персонализираме размера на обекта Figure.

fig = plt.figure(figsize=(8,5))
ax1 = fig.add_axes([0.1, 0.1, 0.6, 0.3])
plt.show()

Параметрите, използвани в метода add_axes, дефинират местоположението и размера на обекта Axes.

2. Някои неща могат да бъдат имплицитни

В предишния пример използвахме метода add_axes, за да добавим Axes към обект Figure. Не е нужно да правите това всеки път, когато трябва да добавите оси. Всъщност рядко ще видите използвания метод add_axes.

Неща като създаване на фигурен обект или добавяне на оси понякога могат да бъдат изрични. Не позволявайте на това да ви обърква. Например в следващия пример ще създадем хистограма на ценовата колона на DataFrame.

plt.hist(df["Price"])
plt.show()

Току-що използвахме функцията hist, за да създадем горната хистограма. Не трябваше изрично да създаваме фигура и оси, защото те се правят автоматично, след като се извика функция за чертане (напр. hist, plot).

Можем, разбира се, първо да създадем фигура и след това сюжета. Да кажем, че искаме да променим размера на фигурата за тази хистограма:

plt.figure(figsize=(8,4))
plt.hist(df["Price"])
plt.show()

3. Етикети върху фигура и оси

Графики без заглавия и етикети на осите не са полезни. Трябва да направим сюжетите възможно най-информативни, без да ги затрудняваме за четене. Заглавията и етикетите обаче са задължителни.

В Matplotlib се използват различни методи за добавяне на заглавия и етикети към обектите Фигура и Оси.

Когато работим върху обект Figure, можем да използваме методите title, xlabel и ylabel.

# create a Figure
plt.figure(figsize=(8,4))
plt.hist(df["Price"])
plt.title("Histogram of Price", fontsize=15)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Frequency", fontsize=14)
plt.show()

Когато работите върху обект Axes, съответните методи са set_ti

# create a Figure with an Axes
fig, ax = plt.subplots(figsize=(8,4))
ax.hist(df["Price"])
ax.set_title("Histogram of Price", fontsize=15)
ax.set_xlabel("Value", fontsize=14)
ax.set_ylabel("Frequency", fontsize=14)
plt.show()

Въпреки че използвахме различни методи за добавяне на заглавия и етикети, резултатите бяха еднакви. Това е така, защото работихме върху фигура с една ос. Можем да наблюдаваме разликата върху фигура с обекти с множество оси. Ще разгледаме това в следващия раздел.

4. Фигура с множество оси

Един обект Фигура може да съдържа множество обекти Axes. Можем да подредим оформлението на фигурата с помощта на функцията за подграфи. Например, следният кодов фрагмент създава фигура с обекти с 2 оси, разположени като редове.

fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(8,5))
plt.show()

Празно е, тъй като не сме начертали нищо. Нека начертаем хистограми и също така да зададем заглавията на обектите Фигура и Оси.

fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(8,5))
# figure title
fig.suptitle("Histogram of Price and SalesQty", fontsize=15)
# plot on the first Axes
ax1.hist(df["Price"])
ax1.set_title("Price", fontsize=14)
# plot on the second Axes
ax2.hist(df["SalesQty"])
ax2.set_title("SalesQty", fontsize=14)
# adjust the spacing between subplots
fig.tight_layout(pad=1)
plt.show()

Когато работим с фигура с подграфики, използваме метода на субтитрите, за да добавим заглавие към цялата фигура (не метода на заглавието).

Matplotlib е библиотека от ниско ниво в сравнение с други популярни алтернативи като Seaborn и Plotly. В резултат на това трябва да очакваме да напишем повече код за създаване на визуализации на данни, което идва с предимството да имаме пълен контрол върху това, което чертаем.

Познаването на структурата на графиките и как Matplotlib обработва тези персонализации е важна стъпка, за да извлечете максимума от тази невероятна библиотека.

Това, което разгледахме в тази статия, ще ви помогне да разберете по-добре как работят нещата с Matplotlib.

Можете да станете член на Medium, за да отключите пълен достъп до моето писане, плюс останалата част от Medium. Ако вече сте, не забравяйте да се абонирате, ако искате да получавате имейл всеки път, когато публикувам нова статия.

Благодаря ви, че прочетохте. Моля, уведомете ме, ако имате отзиви.