仅水平网格(在python中使用pandas plot + pyplot)

Aur*_*vir 4 python matplotlib pandas

我只想使用熊猫图获得水平网格。

pandas的集成参数仅具有grid=Truegrid=False,因此我尝试使用matplotlib pyplot来更改轴参数,尤其是使用以下代码:

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)
Run Code Online (Sandbox Code Playgroud)

但是我没有水平或垂直的网格。熊猫会覆盖轴吗?还是我做错了什么?

She*_*ore 9

绘制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()
Run Code Online (Sandbox Code Playgroud)

或者,您也可以执行以下操作:直接使用从DataFrame图返回的轴对象打开水平网格

fig = plt.figure()

ax2 = df.plot(kind='bar', fontsize=10, sort_columns=True)
ax2.grid(axis='y')
Run Code Online (Sandbox Code Playgroud)

@ayorgo在注释中建议的第三个选项是将两个命令链接为

df.plot(kind='bar',ax=ax2, fontsize=10, sort_columns=True).grid(axis='y')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 要将 y 网格线移到后面,请在调用“grid”时将“zorder=0”添加到参数中 (4认同)
  • zorder=0 参数对我不起作用 (3认同)