См. приведенный ниже пример. Добавляются два подграфика, и в каждый вставляется график 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
Вывод рисунка:
set_axes
, если она на самом деле ничего не меняет. - person c00kiemonster   schedule 19.08.2011axes.add_line()
, но я пока не могу заставить его работать. До сих пор я создал новую линию, использовалupdate_from()
для копированияf
в эту новую строку, а затем добавил ее к другим осям. Это все еще не работает, но может быть для вашего приложения. Я не думаю, что это работает для меня, потому что я не думаю, что сплайны, используемые для создания линии, обновлены для новых осей, но я изучаю это.... - person Yann   schedule 19.08.2011set_axes
в документах, но не могу заставить его работать (поскольку я предполагаю, что он должен работать). Возможно, я неправильно понял механику осей в matplotlib, но, насколько я вижу, я думаю, что это нелогичное поведение. - person c00kiemonster   schedule 20.08.2011