如何在Python中绘制网格?

Lia*_*Fan 145 python matplotlib

我刚刚完成编写代码以在Python中使用pylab制作绘图,现在我想在散点图上叠加10x10的网格.我怎么做?

And*_*lev 190

你想用pyplot.grid:

x = numpy.arange(0, 1, 0.05)
y = numpy.power(x, 2)

fig = plt.figure()
ax = fig.gca()
ax.set_xticks(numpy.arange(0, 1, 0.1))
ax.set_yticks(numpy.arange(0, 1., 0.1))
plt.scatter(x, y)
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

ax.xaxis.gridax.yaxis.grid可以控制网格线属性.

在此输入图像描述

  • 或者,最好做一下`ax.scatter(x,y)`和`ax.grid(True)`. (4认同)
  • 知道为什么这会为我生成一个没有网格的图吗? (2认同)

Jos*_*ush 45

要在每个刻度线上显示网格线,请添加

plt.grid(True)
Run Code Online (Sandbox Code Playgroud)

例如:

import matplotlib.pyplot as plt

points = [
    (0, 10),
    (10, 20),
    (20, 40),
    (60, 100),
]

x = list(map(lambda x: x[0], points))
y = list(map(lambda x: x[1], points))

plt.scatter(x, y)
plt.grid(True)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


此外,您可能希望自定义样式(例如实线而不是虚线),添加:

plt.rc('grid', linestyle="-", color='black')
Run Code Online (Sandbox Code Playgroud)

例如:

import matplotlib.pyplot as plt

points = [
    (0, 10),
    (10, 20),
    (20, 40),
    (60, 100),
]

x = list(map(lambda x: x[0], points))
y = list(map(lambda x: x[1], points))

plt.rc('grid', linestyle="-", color='black')
plt.scatter(x, y)
plt.grid(True)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Ani*_*Ani 9

使用rcParams,您可以非常轻松地显示网格,如下所示

plt.rcParams['axes.facecolor'] = 'white'
plt.rcParams['axes.edgecolor'] = 'white'
plt.rcParams['axes.grid'] = True
plt.rcParams['grid.alpha'] = 1
plt.rcParams['grid.color'] = "#cccccc"
Run Code Online (Sandbox Code Playgroud)

如果在更改这些参数后仍未显示网格,则使用

plt.grid(True)
Run Code Online (Sandbox Code Playgroud)

在打电话之前

plt.show()
Run Code Online (Sandbox Code Playgroud)