Matplotlib: намалюйте сітки за іншими елементами графіка


123

У 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 вперше, тому поняття не маю, якщо це правильно - я просто знайшов це, гуглюючи "matplotlib z сітка порядку" - "z порядок", як правило, використовується для опису подібних речей (z є віссю "поза сторінкою"))


Чи можливе розміщення сітки під смужкою / лінією, зберігаючи мітки зверху? Я також відправив це quesiton окремо stackoverflow.com/questions/29522447 / ...
joelostblom

Це може бути цей matplotlib.1069221.n5.nabble.com/… , проте давня нитка.
Жак Квам

86

Мені було незрозуміло, як застосувати і відповісти cooke, тому це повне рішення, виходячи з цього:

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

34

Якщо ви хочете перевірити налаштування для всіх фігур, ви можете встановити

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.