Matplotlib - это библиотека Python, на которую значительное влияние оказал MatLab, и она нацелена частично на бывших и нынешних пользователей MatLab, поэтому имеет 2 типа синтаксиса:
синтаксис MatLab, plt.sublot(211); plt.plot(); plt.colorbar();
, это означает, что каждый раз, когда вы создаете фигуру или подзаговор, она сохраняется внутри как последний активный объект, и к нему применяются все графики и изменения параметров.Это сделано для того, чтобы было удобно пользоваться тем, кто перешел с MatLab.Идея состоит в том, что вы создаете элемент и мгновенно применяете к нему все действия, затем создаете следующий и никогда не возвращаетесь к предыдущему, пока не вызовете plt.show
.
Классический синтаксис программирования с явным объявлением объекта иоперации на указанных объектах.Это удобно для всех остальных и позволяет вернуться к ранее созданным объектам (фигурам и осям) и внести дополнительные изменения.
Способ с MATLAB затрудняет работу с несколькими фигурами.(рисунок - это независимое изображение, оси - это область изображения, на котором вы строите данные) plt.show всегда показывает последний созданный вами рисунок, например:
plt.figure() #new figure created and stored as current active
Plt.subplot() #new axes created in current figure and stored as current axes
Plt.plot() #data plotted in current axes
Plt.subplot() #second axes added to figure and made current active
Plt.plot() #plot in current active that is second now
Plt.figure() #the new figure created, old can still be found with difficulty i believe,
#but current active is now different and plt.show will not show anything you plotted before.
Но некоторые люди находят его лучше для быстрого иГрязное построение.
Вы можете переходить между двумя, используя fig_1 = plt.gcf();
, ax_1 = plt.gca();
, которые получают текущую фигуру и получают текущие оси по горизонтали.Есть также несколько способов изменить внешний вид, один для matlab
plt.make_current_axes_without_ticks( param)
и один для oop языков (
fig=plt.figure;
ax=fig.add_axes();
axis=ax.y_axis();
yticks=axis.ticks();
yticks.set_visible(false);
или что-то в этом роде.
Конечно, несколько интерфейсовусложнить изучение, но облегчить переход от других аналогичных инструментов и сделать его менее жестким, а это означает, что иногда существуют очень простые способы внесения часто используемых, но запутанных изменений (см. пример с метками)