четвер, 23 квітня 2020 р.

Multiple Subplots (python)

Будувати множинні графіки в python можна різними способами. При побудові графіків з використанням бібліотеки Matplotlib існує два стилі, які часто комбінуються. Один це стиль matlab, який реалізовується за допомогою функцій у модулі pyplot. Інший стиль - це об'єктно- орієнтований стиль, який мені особисто більше подобається (мабуть Java дається взнаки). В об'єктно орієнтованому стилі ви маєте фігуру - що представляє собою весь графік і підграфіки(subplots), що предсталяються об'єктами Axes. Взявши потрібний об'єкт Axes ми отримуємо можливість маніпулювати нашим підграфіком.

Один із способів це зробити використати метод(функцію) sublots():
#будуємо графік 2х2 (4 підграфіки)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
Можна також так:
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True)
axs[0, 0].plot(x) # працюємо з координатами підграфіків
sharex=True, sharey=True - означає, що у нас будуть для всіх графіків спільні осі Х та Y. Якщо хочемо для кожного графіка свої осі, то не задаємо ці параметри.

Таким чином можемо побудувати наші графіки:

import matplotlib.pyplot as plt;
import pandas as pd;
x=["1991","1992","1995","2010","2011","2016"]
y=[5,4,5,2,4,6]
#створюємо фігуру 2х2 (4 підграфіки)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.tight_layout(pad=3.0)#простір між підграфіками

#задаємо назву для всієї фігури 
fig.suptitle("Різні діаграми", fontsize=14)
#first sublot
ax1.plot(x, y)
ax1.grid()
ax1.set_title("price")
ax1.tick_params(axis='x', rotation=45) # повертаємо позначки осі x  
ax1.set_ylabel('Ціна') # підпис осі y
ax1.set_xlabel('Роки') # підпис осі x

#second sublot
ax2.scatter(x, y)
ax2.tick_params(axis='x', rotation=45)
#third subplot
ax3.bar(x,y)
ax3.tick_params(axis='x', rotation=90)  

#fourth sublot
ax4.pie(y, labels=y,explode = (0.1,0.2,0.3,0.3,0.3, 0.3),startangle=90, autopct='%.1f%%')
ax4.legend(bbox_to_anchor = (-0.99, -0.3, 0.25, 0.25),loc = 'lower left', labels=x)
plt.show()

Результат:
Subplot Matplotlib, графік. график, діаграма

Дивіться також:

Немає коментарів:

Дописати коментар