При использовании pyplot вы можете строить неявный метод с помощью plt.plot()
или явный метод, создавая и вызывая объекты фигур и осей с помощью fig, ax = plt.subplots()
. То, что здесь произошло, на мой взгляд, является побочным эффектом от использования неявного метода.
Например, вы можете использовать две команды pd.DataFrame.plot()
и сделать так, чтобы они совместно использовали одну и ту же ось, передав возвращаемую ось другая функция.
foo = pd.DataFrame(dict(a=[1,2,3], b=[4,5,6]))
bar = pd.DataFrame(dict(c=[3,2,1], d=[6,5,4]))
ax = foo.plot()
bar.plot(ax=ax) # ax object is updated
ax.plot([0,3], [1,1], 'k--')
Вы также можете создать объект фигуры и оси ранее, и поставлять по мере необходимости. Кроме того, он идеально подходит для нескольких команд печати. Часто мой код на 25% работает, 75% возится с графиками. Не пытайтесь быть умным и не теряйте удобочитаемость.
fig, axes = plt.subplots(nrows=3, ncols=1, sharex=True)
# In this case, axes is a numpy array with 3 axis objects
# You can access the objects with indexing
# All will have the same x range
axes[0].plot([-1, 2], [1,1])
axes[1].plot([-2, 1], [1,1])
axes[2].plot([1,3],[1,1])
Таким образом, вы можете объединить оба этих фрагмента в свой собственный код. Сначала создайте объект фигур и осей, затем постройте каждый фрейм данных, но предоставьте им правильную ось с ключевым словом ax
.
Кроме того, предположим, что у вас есть три объекта оси, и у них разные пределы x
, Вы можете получить их все, а затем задать для трех одинаковое минимальное значение и одинаковое максимальное значение. Например:
axis_list = [ax1, ax2, ax3] # suppose you created these separately and want to enforce the same axis limits
minimum_x = min([ax.get_xlim()[0] for ax in axis_list])
maximum_x = max([ax.get_xlim()[1] for ax in axis_list])
for ax in axis_list:
ax.set_xlim(minimum_x, maximum_x)