Неправильная расстановка графиков imshow и mark_inset - PullRequest
0 голосов
/ 12 июня 2018

Следующий код, используемый в интерактивном сеансе matplotlib, например, ipython --pylab,

from mpl_toolkits.axes_grid1.inset_locator import mark_inset

A = np.random.rand(5, 5)
ex = (0, 5, 0, 5) 
imshow(A, interpolation='nearest', extent=ex)
ax = gca()

inset_dist = 0.01
inset_width = 0.1
inset_start_right = 0.68
inset_start = inset_start_right - inset_width
def get_ins_start(nr):
  return inset_start - nr * (inset_width + inset_dist)

axins1 = axes([inset_start, .59, inset_width, 0.26])
axins2 = axes([get_ins_start(1.), .59, inset_width, 0.26])
mark_inset(ax, axins1, loc1=1, loc2=2, zorder=10)
mark_inset(ax, axins2, loc1=1, loc2=2, color="red", zorder=20)

axins1.set_xlim((4,5))
axins1.set_ylim(1,2)

axins2.set_xlim((3,4))
axins2.set_ylim(1,2)

axins1.imshow(A, interpolation='nearest', zorder=300, extent=ex)
axins2.imshow(A, interpolation='nearest', zorder=400, extent=ex)

дает этот результат

Как вы можете видеть, красные линии маркера вставки наложены на крайнее правое изображение вставки.Я попытался изменить порядок команд и возиться с параметром zorder, но ничего не работает.

Как я могу это исправить?

1 Ответ

0 голосов
/ 13 июня 2018

Если речь идет о красной линии, идущей сверху правого изображения, это действительно можно решить с помощью zorder

axins1 = plt.axes([inset_start, .59, inset_width, 0.26])
axins1.set_zorder(5)

enter image description here

Что меня больше всего беспокоит, так это то, что изображение в осях скрывает оси осей. Это проблема, решение которой у меня нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...