如何在Python中绘制一个网格?
我刚刚写完代码,使用Python中的pylab进行绘图,现在我想将一个10×10的网格叠加到散点图上。 我怎么做?
你想使用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.grid
和ax.yaxis.grid
可以控制网格线的属性。
要在每个滴答声中显示网格线,请添加
plt.grid(True)
例如:
import matplotlib.pyplot as plt points = [ (0, 10), (10, 20), (20, 40), (60, 100), ] x = map(lambda x: x[0], points) y = 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 = map(lambda x: x[0], points) y = map(lambda x: x[1], points) plt.rc('grid', linestyle="-", color='black') plt.scatter(x, y) plt.grid(True) plt.show()
pylab的例子页面是一个非常有用的来源。 与您的问题相关的示例:
http://matplotlib.sourceforge.net/mpl_examples/pylab_examples/scatter_demo2.py http://matplotlib.sourceforge.net/users/screenshots.html#scatter-demo
使用rcParams你可以非常容易地显示网格,如下所示
plt.rcParams['axes.facecolor'] = 'white' plt.rcParams['axes.edgecolor'] = 'white' plt.rcParams['grid.alpha'] = 1 plt.rcParams['grid.color'] = "#cccccc"
如果在更改这些参数后仍未显示网格,请使用
plt.grid(True)
打电话之前
plt.show()
下面是一个小例子,说明如何在Python 2中添加一个matplotlib网格到Gtk3中(不能在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()