如何在 Matplotlib Pyplot 中显示网格

mo abdelazim 2024年2月15日
  1. 在 Matplotlib 中绘制正态分布图
  2. 在 Matplotlib 中的绘图中使用 grid()
  3. 改变 Matplotlib 中的网格属性
  4. 绘制垂直或水平线
如何在 Matplotlib Pyplot 中显示网格

本教程介绍了如何在 Python Matplotlib 中在图上画一个网格。我们将使用 grid() 函数来实现这一目的。它还演示了如何使用 grid() 函数参数来自定义网格的颜色和形状,甚至只画垂直或水平线。

在 Matplotlib 中绘制正态分布图

让我们先创建两个列表来表示 x 和 y 值,并使用它们来绘制一个图。调用 plot() 函数并传递 x 和 y 列表作为参数,然后调用 show() 函数。

使用 title()xlabelylabel() 函数为你的图添加标题和标签,使其易于理解。

from matplotlib import pyplot as plt

x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]

plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

plt.plot(x, y)
plt.show()

输出:

Matplotlib 中的无网格正常绘图

但是,普通的画图似乎很无聊,缺少了一些东西。现在,我们需要给我们的绘图添加一个网格。

在 Matplotlib 中的绘图中使用 grid()

我们将使用 Matplotlib grid() 函数在图上画一个网格。

我们需要在 show() 之前调用 grid() 函数,这样就会在前面的图上画出一个网格。

请看下面的代码。

from matplotlib import pyplot as plt

x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]

plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

plt.plot(x, y)
plt.grid()
plt.show()

输出:

Matplotlib 中的简单网格

改变 Matplotlib 中的网格属性

grid() 函数接受参数来定制网格的颜色和样式。我们可以像 grid(color='r', linestyle='dotted', linewidth=1) 这样调用 grid() 来得到一个红色、点状和细线的网格。

from matplotlib import pyplot as plt

x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]

plt.title("MyPlot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")

plt.plot(x, y)
plt.grid(color="r", linestyle="dotted", linewidth=1)
plt.show()

输出:

Matplotlib 中的网格属性

线宽是浮动数据类型,这里有所有的颜色代码和线型供你选择。

有效的颜色代码。

代码 颜色
b 蓝色
g 绿化
r 红色
c 青色
m 洋红色
y
k 黑色
w 白色

有效的行式。

  • -
  • --
  • -.
  • :
  • None
  • ``
  • solid
  • dashed
  • dashdot
  • dotted

绘制垂直或水平线

grid() 函数的默认值是同时绘制水平轴和垂直轴,但你可能也想自定义它。你可以使用 axis 参数来实现这一点。调用 grid() 时,使用 axis='x'只画垂直线,或者 axis='y'只画水平线,或者 axis='both'两者都画,这是默认选项。

请看下面的代码和它的输出。

from matplotlib import pyplot as plt

x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]

_, (a, b, c) = plt.subplots(1, 3)

a.grid(axis="y", linestyle="dotted", color="b")
a.plot(x, y)
a.set_title("axis='y'")

b.grid(axis="x", linestyle="dotted", color="b")
b.plot(x, y)
b.set_title("axis='x'")

c.grid(axis="both", linestyle="dotted", color="b")
c.plot(x, y)
c.set_title("axis='both'")

plt.show()

输出:

Matplotlib 中的 X 轴 Y 轴网格