В предыдущей ответить было рекомендовано, чтобы я использовал 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()`.