ConnectionPath скрывается за субплотом - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу отметить линию на двух выровненных участках.Поэтому я использую matplotlib.patches.ConnectionPatch, как предлагается в других ответах.Это уже работало в других примерах, но здесь во второй раз линия просто обрезается во второй области графика.

Как мне убедиться, что ConnectionPatch нанесен спереди?

Я пытался поиграть с Зордером, но пока не нашел решения.

enter image description here

from matplotlib.patches import ConnectionPatch
import matplotlib.pyplot as plt

xes=[-2, 0, 2]
field=[0, -10, 0]
potential=[-20, 0, 20]

fig, axs = plt.subplots(2, 1, sharex=True)

axs[0].plot(xes, field)
axs[1].plot(xes, potential)

# line over both plots
_, ytop = axs[0].get_ylim()
ybot, _ = axs[1].get_ylim()
n_p_border = ConnectionPatch(xyA=(0., ytop), xyB=(0., ybot), 
                             coordsA='data', coordsB='data',
                             axesA=axs[0], axesB=axs[1], lw=3)
print(n_p_border)
axs[0].add_artist(n_p_border)

1 Ответ

0 голосов
/ 02 декабря 2018

Вам необходимо поменять роль двух осей.Это также показано в Рисование линий между двумя графиками в Matplotlib .

from matplotlib.patches import ConnectionPatch
import matplotlib.pyplot as plt

xes=[-2, 0, 2]
field=[0, -10, 0]
potential=[-20, 0, 20]

fig, axs = plt.subplots(2, 1, sharex=True)

axs[0].plot(xes, field)
axs[1].plot(xes, potential)

# line over both plots
_, ytop = axs[0].get_ylim()
ybot, _ = axs[1].get_ylim()
n_p_border = ConnectionPatch(xyA=(0., ybot), xyB=(0., ytop), 
                             coordsA='data', coordsB='data',
                             axesA=axs[1], axesB=axs[0], lw=3)

axs[1].add_artist(n_p_border)
plt.show()

enter image description here

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