Matplotlib: рисовать линии сетки за другими элементами графика - PullRequest
93 голосов
/ 13 ноября 2009

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

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

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

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

Ответы [ 4 ]

87 голосов
/ 13 ноября 2009

В соответствии с этим - http://old.nabble.com/axis-elements-and-zorder-td6119088.html - вы можете использовать Axis.set_axisbelow(True)

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

62 голосов
/ 19 августа 2016

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

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')
20 голосов
/ 22 марта 2017

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

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

или

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

Работает для Matplotlib> = 2.0.

8 голосов
/ 25 марта 2013

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

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

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

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