Каковы различия между add_axes и add_subplot?

В предыдущей ответить было рекомендовано, чтобы я использовал add_subplot вместо add_axes, чтобы показать топорами правильно, но поиск в документации, я не мог'т понять, когда и почему я должен использовать одну из этих функций.

Может кто-нибудь объяснить разницу?

Решение

Общие основания

Какadd_axes и add_subplot добавить осям на рис. Обе они возвращают (подкласс) `библиотек matplotlib.осям.Объект осей.

Тем не менее, механизм, который используется для добавления осей существенно отличается.

add_axes

Призвание подпись add_axes является add_axes(прямоугольник), где прямоугольник список [х0, У0, ширина, высота], обозначающие нижняя левая точка новой оси на рис. координирует `(х0,У0) и его ширину и высоту. Так что топоры positionned в абсолютных координатах на холсте. Е. Г.

fig = plt.figure()
ax = fig.add_axes([0,0,1,1])

помещает фигуры в холсте точно, как и сам холст.

add_subplot

Призвание подпись add_subplot непосредственно не предоставляет возможность разместить оси в заданное положение. Он скорее позволяет указать, где оси должны быть расположены по сетке сюжета. Обычный и простой способ, чтобы указать, что такая позиция 3 число нотации,

fig = plt.figure()
ax = fig.add_subplot(231)

В этом примере новое осей создается в первой позиции (1) на сетке из 2 строк и 3 столбцов. Для производства только одной оси, add_subplot(111) будет использован (первый участок на 1 по 1 сетке сюжетные). (В более новых версиях библиотек matplotlib, `add_subplot () без каких-либо аргументов, а также возможен.)

Преимущество этого метода заключается в том, что библиотек matplotlib заботится о точном позиционировании. По add_subplot по умолчанию (111) создаст оси расположены в[0.125,0.11,0.775,0.77] или похожие, которые уже оставляет достаточно пространства вокруг оси на звание и (клеща)этикетки. Однако эта позиция также может меняться в зависимости от других элементов в сюжете, титулы и так далее. Она также может быть скорректирована с помощью pyplot.subplots_adjust (...) " или " pyplot.tight_layout()`.

В большинстве случаев, add_subplot будет предпочтительным методом для создания осей для участков на холсте. Только в тех случаях, когда точные вопросы позиционирования,add_axes` может быть полезным.

Пример ###

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (5,3)

fig = plt.figure()
fig.add_subplot(241)
fig.add_subplot(242)
ax = fig.add_subplot(223)
ax.set_title("subplots")

fig.add_axes([0.77,.3,.2,.6])
ax2 =fig.add_axes([0.67,.5,.2,.3])
fig.add_axes([0.6,.1,.35,.3])
ax2.set_title("random axes")

plt.tight_layout()
plt.show()

Альтернатива

Самый простой способ получить одну или несколько сюжетных линий вместе с их ручками ПЛТ.сюжетных линий(). Для одной оси, использование

fig, ax = plt.subplots()

или, если требуется больше сюжетных линий несколько,

fig, axes = plt.subplots(nrows=3, ncols=4)

Первоначальный вопрос

В начальная question была осей размещены с помощью рис.add_axes([0,0,1,1]), такую, что она сидит плотно по фигуре границ. Недостатком этого является, конечно, клещей, ticklabels, подписей осей и заголовки обрезаны. Поэтому я предложил в одном из комментариев к ответу использовать рис.add_subplot как это автоматически позволит достаточно места для этих элементов, и, если этого недостаточно, можно отрегулировать с помощью pyplot.subplots_adjust (...) " или " pyplot.tight_layout()`.

Комментарии (0)