Назви предметів
Matplotlib є сильно об'єктно-орієнтованим, і його основними об'єктами є фігура та осі (я вважаю назву axes
трохи оманливою, але, мабуть, це лише я).
Ви можете уявити малюнок як полотно , для якого ви зазвичай вказуєте розміри і, можливо, наприклад, колір тла тощо. Ви використовуєте полотно, рисунок , по суті, двома способами, розміщуючи на ньому інші предмети (переважно осі , але також текстові мітки тощо) та збереження його вмісту за допомогою savefig
.
Ви можете думати про осях як свого роду швейцарський армійський ніж, зручний об'єкт , який пропонує інструмент (наприклад .plot
, .scatter
, і .hist
т.д.) для всього, головним чином. Ви можете розмістити одну, дві, ... багато осей усередині фігури, використовуючи один із багатьох різних методів.
plt
інтерфейс
Рх процедурний інтерфейс був спочатку розроблений , щоб імітувати інтерфейс MATLAB ™ , але на самому ділі не відрізняється від інтерфейсу об'єктно - орієнтованим, навіть якщо ви не зробите пряме посилання на основні об'єкти (тобто, фігура і Ан осі ) ці об'єкти автоматично створюється примірник, і кожен метод plt , по суті, перекладається у виклик одного з методів основних основних об'єктів: наприклад, a plt.plot()
є a, hidden_axes.plot
a a plt.savefig
є a hidden_figure.savefig
.
У кожен момент ви можете мати дескриптор цих прихованих об'єктів за допомогою plt.gcf
та plt.gca
, і це іноді потрібно, коли один із методів об'єкта не був перенесений на метод у просторі імен plt .
Я хотів би додати, що простір імен plt також містить низку зручних методів для створення екземплярів, різними способами, фігури та осі .
Ваші приклади
1-й спосіб
plt.plot(x, y)
Тут ви використовуєте лише інтерфейс plt , ви можете використовувати лише одні осі на кожному малюнку , але це те, що ви хочете, коли ви проводите дослідження ваших даних, швидкий рецепт, який дозволяє виконати роботу ...
2-й спосіб
ax = plt.subplot()
ax.plot(x, y)
Тут ви використовуєте зручний метод у просторі імен plt, щоб вказати ім'я (і дескриптор) для вашого об'єкта осей , але, крім того, є також прихована фігура . Пізніше ви можете використовувати вісь об'єкт для побудови графіка, щоб зробити гістограму і т.д., все речі , які ви можете зробити з рх інтерфейсом, але ви також можете отримати доступ до всіх його атрибутів і змінювати їх з більшою свободою.
3-й спосіб
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)
Тут ви починаєте створювати екземпляр фігури за допомогою зручного методу в просторі імен plt, а пізніше використовуєте лише об'єктно-орієнтований інтерфейс.
Можна обійти метод зручності plt ( matplotlib.figure.Figure
), але тоді вам доведеться налаштувати фігуру для кращого інтерактивного досвіду (зрештою, це зручний метод).
Особисті рекомендації
Я пропоную оголити plt.plot
, plt.scatter
в контексті інтерактивного сеансу, можливо, використовуючи IPython з його %matplotlib
магічною командою, а також у контексті дослідницького блокнота Юпітера.
З іншого боку, об’єктно-орієнтований підхід, а також кілька plt
зручних методів - це шлях
- якщо у вас є постійна проблема, яку потрібно вирішити раз і назавжди за допомогою індивідуального розташування тонко налаштованих сюжетів
- якщо ви хочете вбудувати Matplotlib в інтерфейс програми, яку ви пишете.
Між цими крайнощами є велика сіра зона, і якщо ви запитаєте мене, що робити, я просто скажу "Це залежить" ...