У меня есть ось, на которой я строю некоторые данные, и у меня есть другая двойная ось, которую я использую для рисования линий сетки в определенных позициях тиков (кроме тиков на исходной оси):
import matplotlib.pyplot as plt
import numpy as np
f, ax = plt.subplots()
ax.set_xlim([0, 1])
ax2 = ax.twiny()
ax2.set_xlim([0, 1])
ax2.set_xticks(np.linspace(0, 1, 11))
ax2.xaxis.grid()
x = np.linspace(0, 1, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.legend()
plt.show()
Теперь это имеет нежелательный эффект, так как линии сетки двойных осей рисуются поверх легенды и линейного графика исходной оси.Насколько я понимаю, это потому, что matplotlib рисует оси в том порядке, в котором они были созданы, и по этой причине zorder
не поможет (потому что zorder
указывает порядок только среди художников одной оси).
Я знаю, что вместо этого мог бы вывести данные на двойную ось ax2
(за которой следует ax2.legend()
), но я бы предпочел, чтобы установка была такой, как есть.Вместо этого изменение порядка, в котором нарисованы две оси, должно решить проблему, но я не мог понять, как это сделать.Существует f.get_axes()
, который, кажется, возвращает оси в том порядке, в котором они были созданы, но нет возможности вернуть его.
Или, может быть, существует даже другое решение?