Указание порядка слоев matplotlib

Предположим, что я запускаю следующий скрипт:

import matplotlib.pyplot as plt

lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b')
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r')
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g')
plt.show()

Это дает следующее:

enter image description here

Как я могу указать верхний порядок слоев вместо того, чтобы выбрать Python для меня?

Ответ 1

Я не знаю, почему zorder имеет такое поведение, и, вероятно, это может быть ошибка или, по крайней мере, плохо документированная функция. Возможно, это связано с zorder при создании графика (например, сетке, оси и т.д.) Уже есть автоматические ссылки на zorder и когда вы пытаетесь указать zorder для элементов, вы каким-то образом перекрываете их. В любом случае это гипотетично.

Чтобы решить вашу проблему, просто сделайте различия в zorder преувеличенными. Например, вместо 0,1,2 сделать его 0,5,10:

import matplotlib.pyplot as plt

lineWidth = 20
plt.figure()
plt.plot([0,0],[-1,1], lw=lineWidth, c='b',zorder=10)
plt.plot([-1,1],[-1,1], lw=lineWidth, c='r',zorder=5)
plt.plot([-1,1],[1,-1], lw=lineWidth, c='g',zorder=0)
plt.show()

что приводит к следующему:

Handling zorder in mataplotlib

Для этого сюжета я указал противоположный порядок, указанный в вашем вопросе.

Ответ 2

Слои укладываются снизу вверх в том же порядке соответствующих вызовов функции графика.

import matplotlib.pyplot as plt

lineWidth = 30
plt.figure()

plt.subplot(2, 1, 1)                               # upper plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='b')  # bottom blue
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r')  # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='g')    # top green

plt.subplot(2, 1, 2)                               # lower plot
plt.plot([-1, 1], [-1, 1], lw=5*lineWidth, c='g')  # bottom green
plt.plot([-1, 1], [-1, 1], lw=3*lineWidth, c='r')  # middle red
plt.plot([-1, 1], [-1, 1], lw=lineWidth, c='b')    # top blue

plt.show()

Из рисунка ниже ясно, что сюжеты расположены в соответствии с нижним первым, верхним последним правилом.

How different plots are stacked