Только горизонтальная сетка (в питоне с использованием графика панд + pyplot)

Я хотел бы получить только горизонтальную сетку, используя график панд.

Интегрированный параметр pandas имеет только grid=True или grid=False, поэтому я попытался использовать pyplot matplotlib, изменив параметры осей, в частности, с помощью этого кода:

import pandas as pd
import matplotlib.pyplot as plt
fig = plt.figure()
ax2 = plt.subplot()
ax2.grid(axis='x')
df.plot(kind='bar',ax=ax2, fontsize=10, sort_columns=True)
plt.show(fig)

Но у меня нет сетки, ни горизонтальной, ни вертикальной. Pandas перезаписывает оси? Или я что-то не так делаю?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
27
0
27 116
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте установить сетку после для построения DataFrame. Также, чтобы получить горизонтальную сетку, нужно использовать ax2.grid(axis='y'). Ниже приведен ответ с использованием образца DataFrame.

Я реструктурировал то, как вы определяете ax2, используя subplots.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'lab':['A', 'B', 'C'], 'val':[10, 30, 20]})

fig, ax2 = plt.subplots()

df.plot(kind='bar',ax=ax2, fontsize=10, sort_columns=True)
ax2.grid(axis='y')
plt.show()

В качестве альтернативы вы также можете сделать следующее: использовать объект оси, возвращенный из графика DataFrame, напрямую, чтобы включить горизонтальную сетку.

fig = plt.figure()

ax2 = df.plot(kind='bar', fontsize=10, sort_columns=True)
ax2.grid(axis='y')

Третий вариант, предложенный @ayorgo в комментариях, состоит в том, чтобы связать две команды как

df.plot(kind='bar',ax=ax2, fontsize=10, sort_columns=True).grid(axis='y')

Чтобы переместить линии сетки Y назад, добавьте zorder=0 к аргументам при вызове grid

Gene Burinsky 07.01.2022 19:41

Другие вопросы по теме