Что-ж, сейчас нам необходим еще один кусок теории, перед тем как мы приступим к созданию различных визуализаций – разница между структурированными (ориентированными на структуру) и неструктурированными (ориентированными на объект) интерфейсами.
Ранее, мы использовали import matplotlib.pyplot as plt для импорта модуля pyplot из matplotlib и назвали его plt.
Практически все функции pyplot, такие как plt.plot(), так или иначе, ссылаются на нынешний существующий объект Figure и нынешний объект Axes, или создают их, если какой-либо из них не существует. Рассмотрим полезный фрагмент, скрытый в документации matplotlib:
[pyplot], простые функции используются для добавления элементов графика (линии, изображения, текста, и т.д.) в текущие оси в нашей фигуре.
Хардкорные бывшие пользователи MATLAB могут определить это как: «plt.plot() — это интерфейс структурной машины, который неявно отслеживает текущую фигуру!». По-русски это будет звучать так:
Структурный интерфейс делает свои вызовы с plt.plot() и другими высшими функциями pyplot. Существует только один объект Figure или Axes, который вы используете за данное время, и вам не нужна явная ссылка на этот объект;
Модификация изложенных ниже объектов напрямую – это объектно-ориентированный подход. Обычно, мы делаем это, вызывая методы объекта Axes, который является объектом, который отображает целостный график.
Поток этих процессов на высшем уровне выглядит следующим образом:
Связав все это в месте, большая часть функций из pyplot также существует в качестве методов класса matplotlib.axes.Axes.
Для простоты понимания, мы можем взглянуть под капот. plt.plot() может быть сокращен до пяти строк кода:
matplotlib/pyplot.py
Python
1
2
3
4
5
6
7
8
|
def plot(*args, **kwargs):
"""An abridged version of plt.plot()."""
ax = plt.gca()
return ax.plot(*args, **kwargs)
def gca(**kwargs):
"""Get the current Axes of the current Figure."""
return plt.gcf().gca(**kwargs)
|
И это все. Вызов plt.plot() – это удобный способ получения текущего объекта Axes текущего объекта Figure и вызвать его метод plot(). Это тот случай, когда утверждается, что структурированный интерфейс всегда «неявно отслеживает» график, на который он хочет ссылаться.
Достарыңызбен бөлісу: |