Чтобы отобразить один график поверх другого, я могу либо
- использовать два топора и играть с zorder
- или используйте вместо этого внутренние оси
import matplotlib.pyplot as plt
fig = plt.figure()
ax0 = fig.add_axes([0.1,0.1,0.8,0.8], zorder=1)
ax0.set_title('ax0')
ax1 = fig.add_axes([0.175,0.5,0.3,0.3], zorder=2)
ax1.set_title('ax1')
ax1.set_facecolor('lightgray')
ax1.set_xlim(2,3)
ax1.set_ylim(2,3)
ax2 = ax0.inset_axes([0.575, 0.5, 0.375, 0.375])
ax2.set_title('ax2')
ax2.set_facecolor('gray')
ax2.set_xlim(4,5)
ax2.set_ylim(4,5)
plt.show()
К сожалению, оба варианта демонстрируют нестабильное взаимодействие:
- ax1 показывает правильную информацию на панели навигации и позволяет масштабировать / панорамировать (хорошо). Однако оси фона ax0 также масштабируются и панорамируются (не очень хорошо).
- ax2 полностью игнорируется, т.е. информация о навигационной панели и масштабирование / панорамирование работают только для ax0
Вопрос: Есть ли простой способ отключить информацию / масштабирование / панорамирование для ax0 всякий раз, когда событие мыши находится внутри ax1 или ax2, или мне нужно пережить боль перезаписи функций событий и выполнения преобразований координат на основе на ограничивающих прямоугольниках ax1 / ax2 или даже подкласса панели навигации?
PS: мне нужно только 1. или 2. для работы, а не оба. 1. кажется, было бы ближе к запрошенному поведению, если бы я мог просто выключить / включить ax0, как я хочу ...