Пожалуйста, обратитесь к примеру ниже. Добавляются два вспомогательных участка, и в каждый вставляется график Line2D. Затем я изменяю оси Line2D во втором подзаговоре, чтобы он стал первым. Судя по выводу get_geometry
, это успешно. Однако на фактическом рисунке два графика Line2D все еще находятся в своих исходных графиках.
Что мне здесь не хватает? Как я могу обновить фигуру, чтобы отразить изменение осей?
Очевидно, что это довольно дебильный пример, реальное приложение носит скорее динамический характер.
Сценарий:
import matplotlib.pyplot as plt
fig = plt.figure()
ax_1 = fig.add_subplot(2,1,1)
ax_2 = fig.add_subplot(2,1,2)
ax_1.plot([0,1,2],[0,1,2])
ax_2.plot([0,1,2],[2,1,0])
print 'before'
for line in ax_1.get_lines():
print line.get_ydata()
print line.get_axes().get_geometry()
print id(line.get_axes())
for line in ax_2.get_lines():
print line.get_ydata()
print line.get_axes().get_geometry()
print id(line.get_axes())
f = ax_2.get_lines()[0]
f.set_axes(ax_1)
print 'after'
for line in ax_1.get_lines():
print line.get_ydata()
print line.get_axes().get_geometry()
print id(line.get_axes())
for line in ax_2.get_lines():
print line.get_ydata()
print line.get_axes().get_geometry()
print id(line.get_axes())
plt.show()
Выход:
before
[0 1 2]
(2, 1, 1)
4330504912
[2 1 0]
(2, 1, 2)
4336262288
after
[0 1 2]
(2, 1, 1)
4330504912
[2 1 0]
(2, 1, 1)
4330504912
Вывод рисунка: