如何在Python的绘图上绘制网格?[关闭]


170

我刚刚完成编写代码以在python中使用pylab进行绘图,现在我想将10x10的网格叠加到散点图上。我怎么做?

我当前的代码如下:

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.show()

其输出为:

无网格

我想要的是以下输出:

带格

编辑:添加了一个例子,基于安德烈·索博列夫的答案

Answers:


219

您要使用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()

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

在此处输入图片说明


1
知道为什么这会为我生成没有网格的地块吗?
endlith 2015年

哦,我认为这是一个matplotlibrc问题,我已将网格样式定义为实线,但是这种样式不再起作用了?
endlith 2015年

1
实际上它应该工作。至少它对我有用-设置mpl.rcParams['grid.linestyle'] = "-"确实会产生带有实心网格线的图。你是grid.linestyle什么人
Andrey Sobolev 2015年

-。我不知道为什么它停止工作。有一天我会调查。
endlith 2015年

4
另外,它可以更好地做ax.scatter(x,y)ax.grid(True)
foghorn 2015年

57

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

plt.grid(True)

例如:

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()

在此处输入图片说明


另外,您可能想要自定义样式(例如,实线而不是虚线),请添加:

plt.rc('grid', linestyle="-", color='black')

例如:

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()

在此处输入图片说明


17

使用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"

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

plt.grid(True)

打电话之前

plt.show()


1

这是一个小示例,说明如何使用Python 2在Gtk3中添加matplotlib网格(不适用于Python 3):

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from matplotlib.figure import Figure
from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas

win = Gtk.Window()
win.connect("delete-event", Gtk.main_quit)
win.set_title("Embedding in GTK3")

f = Figure(figsize=(1, 1), dpi=100)
ax = f.add_subplot(111)
ax.grid()

canvas = FigureCanvas(f)
canvas.set_size_request(400, 400)
win.add(canvas)

win.show_all()
Gtk.main()

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.