Как рисовать линии сетки за гистограммой matplotlib

x = ['01-02', '02-02', '03-02', '04-02', '05-02']
y = [2, 2, 3, 7, 2]

fig, ax = plt.subplots(1, 1)
ax.bar(range(len(y)), y, width=0.3,align='center',color='skyblue')
plt.xticks(range(len(y)), x, size='small')
plt.savefig('/home/user/graphimages/foo2.png')
plt.close()

Я хочу рисовать линии сетки (из x и y) за гистограммой.

Ответы

Ответ 1

Чтобы добавить сетку, вам просто нужно добавить

ax.grid()

Если вы хотите, чтобы сетка была за решеткой, добавьте

ax.grid(zorder=0)
ax.bar(range(len(y)), y, width=0.3, align='center', color='skyblue', zorder=3)

Важная часть состоит в том, что zorder баров больше, чем сетка. Экспериментируя, кажется, что zorder=3 - самое низкое значение, которое фактически дает желаемый эффект. Я понятия не имею, почему zorder=1 недостаточно.

ИЗМЕНИТЬ: Я заметил, что этот вопрос уже ответил на здесь, используя другой метод, хотя он страдает некоторой гнилью ссылки. Оба метода дают тот же результат, насколько я могу видеть, но ответ cookie от andrew более элегантен.

Ответ 2

ax.grid(zorder = 0) Вуд работа. Но сначала поставьте планку, а затем - решетку. Не наоборот.

ax = df.plot.bar(x='Index', y='Values', rot=90)
ax.grid(zorder=0)

Я взял некоторую валюту Correlation with Year и отсортировал ее в качестве фрейма данных df, а ниже приведен результат выполнения кода. I took some currency Correlation with Year and Sorted it as my Data Frame df