Если я определю Gridspec следующим образом:
import matplotlib.gridspec as grd
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(15,8))
gs = grd.GridSpec(2, 1, wspace=0, hspace=0, height_ratios=[0.5, 0.5])
first = plt.subplot(gs[0])
second = plt.subplot(gs[1])
first.set_ylim(5, 10)
first.set_xlim(0, 10)
second.set_ylim(0, 5)
second.set_xlim(0, 10)
и затем нанесу точку на краю одного из участков, разделяющих границу,
first.scatter(5, 5)
plt.show()
точка получитсяобрезается по границе, и отображается только верхняя половина круга рассеяния. Есть ли способ показать точку через границу? (Добавление clip_on=False
не влияет на результат).
Частичное решение - установить second.patch.set_alpha(0)
так, чтобы появилась вторая половина точки рассеяния. Проблема заключается в том, что на моем исходном графике для каждого вспомогательного участка был задан цвет фона
second.axhspan(*second.get_ylim(), facecolor='red', alpha=0.5)
, и поэтому даже если я установил прозрачный фон осей с помощью second.patch.set_alpha(0)
, точка пересечения теперь будетпусть половина будет покрыта альфа-цветом 0.5, чего я не хочу. Проще говоря, я хочу, чтобы точки разброса имели zorder выше, чем что-либо еще, включая окружающие участки.
Единственное другое решение, о котором я подумал (если действительно нет простого способа сделать это), это наложить прозрачные оси на всю фигуру и нанести на них мои точки разброса. Причина, по которой я не хочу этого делать, заключается в том, что в действительности мой Gridspec очень сложен и объединяет несколько нелинейных осей Y, и, следовательно, отображение точек из абсолютных координат в относительные координаты фигуры будет довольно сложным.