Matplotlib: рисовать линии сетки за другими элементами графика
В Matplotlib я делаю пунктирные линии сетки следующим образом:
fig = pylab.figure()
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')
однако, я не могу узнать, как (или даже если это возможно) сделать линии сетки нарисованы за другими элементами графа, такими как бары. Изменение порядка добавления сетки и добавление других элементов не имеет значения.
Можно ли сделать так, чтобы линии сетки появлялись за всем остальным?
Ответы
Ответ 1
В соответствии с этим - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - вы можете использовать Axis.set_axisbelow(True)
(В настоящее время я устанавливаю matplotlib в первый раз, так что понятия не имею, если это правильно - я просто нашел его, прибегая к помощи "matplotlib z order grid" - "z order" обычно используется для описания такого рода вещей (z - ось "вне страницы"))
Ответ 2
Для меня было непонятно, как применить andrew cooke ответ, так что это полное решение, основанное на этом:
ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')
Ответ 3
Если вы хотите проверить настройки для всех цифр, вы можете установить
plt.rc('axes', axisbelow=True)
или
plt.rcParams['axes.axisbelow'] = True
Он работает для Matplotlib >= 2.0.
Ответ 4
У меня была такая же проблема, и работа над ней работала:
[line.set_zorder(3) for line in ax.lines]
fig.show() # to update
Увеличьте 3
до более высокого значения, если оно не работает.
Ответ 5
ax.grid(zorder = 0) Вуд работа. Но сначала поставьте планку, а затем - решетку. Не наоборот.
ax = df.plot.bar(x='Index', y='Values', rot=90)
ax.grid(zorder=0)
![enter image description here]()
Как нарисовать линии сетки за гистограммой matplotlib