Я хотел бы получить только горизонтальную сетку, используя график панд.
Интегрированный параметр 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 перезаписывает оси? Или я что-то не так делаю?






Попробуйте установить сетку после для построения 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