Вступ до Matplotlib у Python

Matplotlib – це потужна бібліотека Python, призначена для створення різноманітних графічних представлень даних, як статичних, так і інтерактивних. Вона є незамінним інструментом для фахівців у галузі машинного навчання та аналізу даних.

Що таке Matplotlib?

Створена Джоном Д. Хантером у 2003 році, Matplotlib постійно розвивається, і на сьогоднішній день її актуальна версія – 3.4.2 (випущена 8 травня 2021 року).

Основна частина коду бібліотеки написана на Python, але також використовуються C goal та JavaScript для забезпечення крос-платформної сумісності.

Matplotlib тісно інтегрована з NumPy – бібліотекою для числових обчислень в Python. Ця інтеграція робить Matplotlib чудовою альтернативою MATLAB з відкритим кодом.

Для розробки GUI-додатків на Python, Matplotlib пропонує об’єктно-орієнтований API для створення статичних графіків.

Користувачі можуть візуалізувати свої дані за допомогою різноманітних графіків, таких як діаграми розсіювання, гістограми, стовпчасті діаграми, кругові діаграми, лінійні графіки та інші, використовуючи лише кілька рядків коду Python.

Matplotlib дозволяє генерувати графіки в різних середовищах, включаючи інтерактивну оболонку Python, Jupyter Notebook, Jupyter Lab, а також за допомогою PyCharm, Anaconda та серверів веб-додатків, таких як Flask і Django, на різних операційних системах.

Як і в MATLAB, користувачі мають широкий контроль над зовнішнім виглядом графіків, налаштовуючи шрифти, лінії, кольори та стилі.

Після ознайомлення з можливостями Matplotlib, давайте розглянемо, як її можна налаштувати на вашому комп’ютері.

Налаштування середовища Matplotlib

Як і інші пакети та бібліотеки Python, Matplotlib можна встановити за допомогою менеджера пакетів pip на будь-якій операційній системі.

Перед встановленням Matplotlib необхідно переконатися, що у вашій системі встановлено Python та pip.

Наступні команди допоможуть вам перевірити версії Python та pip, щоб підтвердити їхню наявність.

Перевірка встановлення Python

Python --version

Перевірка встановлення pip

pip -V

Встановлення Matplotlib

Наведена нижче команда встановлює Matplotlib з індексу пакетів Python (PyPI).

python -m pip install matplotlib

Після завершення інсталяції ви маєте побачити повідомлення про успішне встановлення бібліотеки.

Для перевірки, чи успішно встановлено Matplotlib, введіть наступну команду, яка відобразить версію Matplotlib у вашій консолі.

import matplotlib
matplotlib.__version__

Розробники, які бажають встановити нескомпільовану версію Matplotlib, повинні мати доступ до необхідного компілятора, залежностей, файлів конфігурації та патчів.

Однак, цей процес може бути досить складним, особливо для початківців. Тому простіше використовувати команду для встановлення бібліотеки за лічені секунди.🤔

Після встановлення Matplotlib, імпортуйте її у своє середовище для використання її функцій.

Варіанти побудови графіків Matplotlib

Matplotlib пропонує широкий спектр можливостей для візуалізації даних. Бібліотека також надає можливості налаштування графіків, включаючи різні теми, кольори та параметри палітри, що дозволяє користувачам точно керувати їхнім відображенням.

Основні параметри для побудови графіків включають:

#1. Гістограми

Стовпчикові діаграми ідеально підходять для порівняння кількісних значень в межах однієї категорії.

Matplotlib представляє ці діаграми у вигляді прямокутників, де їх довжина та висота відповідають пропорційним значенням. Смуги можуть бути як горизонтальними, так і вертикальними.

Для створення гістограми Matplotlib використовує функцію plt.bar().

Крім того, ви можете використовувати інші функції для налаштування графіку. Наприклад, plt.xlabel() та plt.ylabel() використовуються для підпису осей x та y, відповідно.

Функція plt.title() дозволяє задати назву графіку, а plt.savefig() зберігає його. Функція plt.show() відображає графік.

#2. Кругові діаграми

Кругові діаграми використовуються для візуалізації пропорційного розподілу елементів в межах однієї категорії.

Вони відображають дані у вигляді відсотків. Загальна площа круга відповідає 100%, а кожен окремий сегмент відображає частку від цього відсотка.

Для створення кругової діаграми Matplotlib використовує функцію plt.pie(), що дозволяє налаштувати різні параметри діаграми.

Такі параметри, як autopct, дозволяють виводити відсоткові значення кожного сегмента з точністю до одного знака після коми. Кругові діаграми широко використовуються для відображення інформації про операції, продажі або ресурси.

#3. Гістограми

Гістограми використовуються для відображення розподілу числових даних. Вони використовують безперервні інтервали для поділу даних на окремі розділи.

Основна відмінність між гістограмою та стовпчиковою діаграмою полягає в типі оброблюваних даних. Гістограми використовують безперервні дані, а стовпчикові діаграми – категорійні.

Matplotlib використовує функцію hist(), яка генерує гістограму на основі масиву випадкових або заданих значень.

#4. Лінійні графіки

Ці графіки корисні для відображення взаємозв’язку між двома наборами даних (числовими або категоріальними) на осях X і Y.

Лінійні графіки відіграють важливу роль у відстеженні зміни даних з плином часу.

#5. Діаграми розсіювання

Діаграми розсіювання відображають взаємозв’язок та кореляцію між змінними, а також виявляють викиди у даних.

Діаграми розсіювання використовують точки для представлення залежності між змінними та показують, як зміна однієї змінної може вплинути на іншу.

Як створювати графіки в Matplotlib

Matplotlib пропонує різні функції для створення різноманітних графіків. Бібліотека також дозволяє створювати графіки за допомогою мінімальної кількості коду.

Далі ми розглянемо, як створити різні типи графіків з використанням функцій Matplotlib.

#1. Стовпчаста діаграма в Matplotlib

Як вже згадувалося, стовпчасті діаграми відображають категорії даних за допомогою стовпчиків і осей. Вони представляють порівняння між категоріями на одній осі та відповідних значень на іншій осі.

Функція bar() в Matplotlib приймає різні аргументи для налаштування макету стовпців, як показано нижче.

plt.bar(x, y, height, width, bottom, align)

Параметри x та y задають координати x та y стовпців на графіку. Параметр width визначає ширину, а height – висоту стовпця.

Наприклад, покажемо кількість собак та котів у притулку для тварин, позначеному як “x”.

import matplotlib.pyplot as plt
import numpy as np

x = ["Cats", "Dogs"]
plt.xlabel("Cats and Dogs in Shelter")
plt.ylabel("No. of animals in Shelter")
plt.title("Number of cats and dogs in shelter x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)

Вивід:

Відображення стовпчикової діаграми в Mathplotlib

Ви можете вказати колір стовпців за допомогою атрибута color. Функції plt.xlabel та plt.ylabel підписують осі x та y відповідно, а plt.title задає назву графіку.

#2. Як створити кругову діаграму

Matplotlib використовує функцію pie(), яка є частиною модуля pyplot для побудови кругових діаграм.

Функція представляє дані для побудови у вигляді масиву.

Синтаксис:

matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)

Параметр colors задає кольори секторів діаграми. Для кожного фрагмента можна вказати колір за допомогою масиву значень.

Щоб відобразити деталі кожного сегмента в секторі, аргумент autopct додає відсоткові значення, використовуючи форматування Python. Аргумент explode приймає масив значень, починаючи з 0.1, щоб визначити відстань сегмента від центру.

Побудуємо кругову діаграму, що відображає розподіл ресурсів у відсотках для певного проекту.

import matplotlib.pyplot as plt
import numpy as np

y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Resources allocated for a random project")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show() 

Вивід:

Відображення кругової діаграми в Mathplotlib

Діаграма відображає чотири фрагменти, позначені як w, x, y та z. Значення рознесення визначають, наскільки далеко від центру будуть розміщені сегменти.

На діаграмі x знаходиться далі від центру, оскільки його значення рознесення більше, ніж у інших. Атрибут shadow додає тінь до діаграми, а autopct задає відсоток, який представляє кожен фрагмент відносно всієї діаграми.

#3. Створення гістограми

Для побудови гістограми використовуються інтервали, що представляють діапазон значень на осі абсцис.

Вісь ординат відображає частоту потрапляння значень у кожний інтервал.

На відміну від інших графіків, для побудови гістограми в Matplotlib потрібні деякі попередні кроки:

  • Створення набору інтервалів на основі набору даних. Використання функції np.random.normal() для генерування випадкових значень.
  • Розподіл значень на інтервали.
  • Підрахунок кількості значень, що потрапляють в кожний інтервал.
  • Використання функції matplotlib.pyplot.hist() для створення гістограми.
  • Функція hist() приймає декілька параметрів:

    x – масив даних.

    bins – необов’язковий параметр, що задає кількість інтервалів, може бути цілим числом або послідовністю.

    range – задає верхню та нижню межу інтервалів.

    align – керує вирівнюванням гістограми.

    color – задає колір стовпців.

    rwidth – встановлює відносну ширину стовпців.

    log – задає логарифмічний масштаб на осі гістограми.

    В наступному прикладі побудовано гістограму на основі заданих значень.

    from matplotlib import pyplot as plt
    
    x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5,  50, 60, 70, 80]
    
    plt.hist(x)
    plt.title('Histogram plot example')
    plt.xlabel('x axis')
    plt.ylabel('frequency')
    plt.show()

    Вивід:

    Відображення гістограми в Mathplotlib

    #4. Лінійний графік в Matplotlib

    Matplotlib використовує свою дочірню бібліотеку pyplot, яка містить функції для побудови різних графіків.

    Функція plot() – це основна функція, яка використовується для побудови лінійних графіків, в тому числі кривих та графіків з декількома лініями. Вид графіку залежить від значень, які передаються на вісь y.

    Для створення графіка імпортуйте matplotlib.pyplot та Numpy. Метод plot(x, y) створює лінійний графік шляхом передачі випадкових значень на осі x та y.

    Додатково можна передати змінну label, яка позначає графік, функцію title для назви, xlabel та ylabel для підпису осей, та show() для відображення графіка.

    Приклад:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 5, 10)
    
    y = 3*x + 2
    plt.title('Line plot example')
    plt.xlabel('x axis')
    plt.ylabel('y axis')
    plt.plot(x, y)
    plt.show()

    Вивід:

    Відображення лінійного графіка в Mathplotlib

    Атрибут np.linspace повертає на графік набір рівновіддалених чисел у певному діапазоні. Цей приклад створює масив з 10 значень в діапазоні від 0 до 5. Значення y розраховані на основі рівняння, яке використовує відповідні значення x.

    Створення діаграм розсіювання

    Matplotlib використовує метод scatter() для створення діаграм розсіювання.

    Цей метод приймає наступні параметри.

    matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None) 

    Параметри x_axis_data та y_axis_data обов’язкові, на відміну від решти, які можуть бути необов’язковими та мати значення None. Аргумент x_axis_data визначає масив даних для осі x, а y_axis_data – масив даних для осі y.

    Приклад діаграми розсіювання:

    import matplotlib.pyplot as plt
     
    x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
     
    y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
    plt.title('Scatter plot example')
    plt.xlabel('x variable')
    plt.ylabel('y variable')
    plt.scatter(x, y, c ="green")
     
    # To show the plot
    plt.show()

    Вивід:

    Відображення діаграми розсіювання в Mathplotlib

    Що таке subplot() в matplotlib

    Функція subplot() використовується для відображення декількох графіків на одній фігурі Matplotlib. Вона дозволяє переглядати та порівнювати декілька графіків на одному зображенні.

    Функція повертає кортеж з трьох аргументів: рядків, стовпців та індексу поточного графіка.

    Рядки та стовпці визначають розміщення графіків на фігурі Matplotlib.

    Наприклад, plt.subplot(2, 1, 1) створить фігуру Matplotlib з двома рядками та одним стовпцем, і поточний графік буде першим у списку.

    З іншого боку, plt.subplot(2, 1, 2) відобразить другий графік в тій самій фігурі з двома рядками та одним стовпцем.

    Таким чином, ці два графіки будуть розташовані один над одним, як в прикладі нижче.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(2, 1, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(2, 1, 2)
    plt.plot(x,y)
    
    plt.show()

    Вивід наведеного вище прикладу буде виглядати наступним чином:

    В наступному прикладі використаємо функцію subplot, щоб побудувати два графіки з одним рядком та двома стовпцями. Графіки будуть розташовані поруч.

    import matplotlib.pyplot as plt
    import numpy as np
    
    #plot 1:
    x = np.array([2, 4, 6, 8])
    y = np.array([3, 6, 9, 12])
    
    plt.subplot(1, 2, 1)
    plt.plot(x,y)
    
    #plot 2:
    x = np.array([3, 6, 9, 12])
    y = np.array([1, 2, 3, 4])
    
    plt.subplot(1, 2, 2)
    plt.plot(x,y)
    
    plt.show()

    Вивід:

    Чи не цікаво це інтерактивно?😃

    Заключні слова

    Matplotlib є відомою бібліотекою візуалізації в Python. Її інтерактивність та простота у використанні роблять її чудовим інструментом для створення графіків, навіть для новачків.

    У цій статті наведено приклади різних типів графіків, які можна створювати за допомогою Matplotlib, зокрема кругові діаграми, стовпчасті діаграми, гістограми та діаграми розсіювання.

    В Python є й інші бібліотеки, які експерти з машинного навчання та аналізу даних можуть використовувати для візуалізації даних.

    Ви можете вивчити інші типи графіків, які можна створити за допомогою Matplotlib, і функції, необхідні для цього.

    Успіхів у візуалізації!📉📊