matplotlib Axes.plot() vs pyplot.plot()
В чем разница между Axes.plot()
и pyplot.plot()
? Используется ли в качестве подпрограммы другое?
Кажется, что мои варианты построения
line = plt.plot(data)
или же
ax = plt.axes()
line = ax.plot(data)
или даже
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)
Существуют ли ситуации, когда предпочтительнее использовать один над другим?
Ответы
Ответ 1
Для рисования одного сюжета наилучшей практикой является, вероятно,
fig = plt.figure()
plt.plot(data)
fig.show()
Теперь давайте взглянем на 3 примера из квестона и объясним, что они делают.
-
Принимает текущую цифру и оси (если она не существует, она создаст новую) и занесет в них.
line = plt.plot(data)
-
В вашем случае поведение такое же, как и раньше, с явным указанием осей для графика.
ax = plt.axes()
line = ax.plot(data)
Этот подход использования ax.plot(...)
является обязательным, если вы хотите нанести на несколько осей (возможно, на одном рисунке). Например, при использовании подзаголовков.
-
Явно создает новую фигуру - вы ничего не добавите к предыдущей. Явно создает новые оси с заданной формой прямоугольника, а остальное - то же, что и с 2.
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)
возможная проблема с использованием figure.add_axes
заключается в том, что он может добавить к фигуре новый объект осей, который накладывает первый (или другие). Это происходит, если запрашиваемый размер не соответствует существующим.
Ответ 2
По сути, нет никакой разницы. plt.plot
в какой-то момент (после проверки наличия фигуры и осей, доступных для построения) вызовет функцию построения из этого экземпляра осей.
Таким образом, основное отличие заключается скорее в пользовательской части:
- Вы хотите использовать подход конечного автомата, подобный Matlab, который может сохранить некоторые строки кода для простых задач построения графиков? Затем используйте
pyplot
.
- Вы хотите иметь полный контроль над графиком, используя более питонический объектно-ориентированный подход? Тогда используйте объекты как оси явно.
Возможно, вы захотите прочитать руководство по использованию matplotlib usage guide.
Ответ 3
Методы построения Pyplot могут применяться либо к корню Pyplot (pyplot.plot()), либо к объекту axes (axes.plot()).
Вызов функции построения графиков непосредственно из библиотеки Pyplot (pyplot.plot()) создает субплот по умолчанию (рисунок и оси). Вызов его для объекта оси (axes.plot()) требует, чтобы вы уже создали свой собственный объект оси и поместили график в это настраиваемое пространство построения.
Хотя pyplot.plot() прост в использовании, вы можете лучше контролировать свое пространство (и лучше понимать взаимодействие с другими библиотеками), если создаете объект axes axes.plot().
Axes.plot() возвращает объект оси. Каждый объект оси имеет родительский объект фигуры. Объект оси содержит методы построения, а также большинство параметров настройки, в то время как объект рисунка хранит все атрибуты уровня рисунка и позволяет выводить график в виде изображения.
Если вы используете метод pyplot.plot() и хотите начать настройку осей, вы можете узнать имя созданного им объекта осей по умолчанию, вызвав pyplot.gca() для "получения текущих осей".
Ответ 4
python plt.plot(): он создаст много подзаговоров по умолчанию, сохранит много строк кода и прост для понимания
Axes.plot(): использование объекта axes даст вам больше возможностей для настройки пространства графика