Matplotlib: рисование линий сетки за другими элементами графика


124

В Matplotlib я делаю пунктирные линии сетки следующим образом:

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')

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

Можно ли сделать так, чтобы линии сетки появлялись за всем остальным?


10
ax.set_axisbelow(True)до сих пор работает. Также хорошо для вывода в pdf ...
BandGap

5
Я ожидал, ax.set_axisbelow(True)что это будет дефолт ...
PatrickT

Ответы:


122

Согласно этому - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - вы можете использоватьAxis.set_axisbelow(True)

(В настоящее время я устанавливаю matplotlib впервые, поэтому понятия не имею, правильно ли это - я только что нашел его, выполнив поиск в Google "сетка порядка z matplotlib" - "порядок z" обычно используется для описания такого рода вещей (z - ось "вне страницы"))


Возможно ли, чтобы линии сетки находились под полосой / линией, а метки оставались наверху? Я также разместил этот вопрос отдельно stackoverflow.com/questions/29522447/…
joelostblom

Это может быть matplotlib.1069221.n5.nabble.com/… , хотя древняя ветка.
Жак Квам

86

Мне было непонятно, как применить ответ Эндрю Кука, поэтому это полное решение, основанное на этом:

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

35

Если вы хотите проверить настройку для всех цифр, вы можете установить

plt.rc('axes', axisbelow=True)

или

plt.rcParams['axes.axisbelow'] = True

Он работает для Matplotlib> = 2.0.


8

У меня была такая же проблема, и работало следующее:

[line.set_zorder(3) for line in ax.lines]
fig.show() # to update

Увеличьте 3до большего значения, если это не работает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.