¿Cómo dibujo una cuadrícula en una parcela en Python? [cerrado]


171

Acabo de terminar de escribir código para hacer un diagrama usando pylab en Python y ahora me gustaría superponer una cuadrícula de 10x10 en el diagrama de dispersión. ¿Cómo puedo hacer eso?

Mi código actual es el siguiente:

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

Y su salida es:

Sin rejilla

Lo que me gustaría es el siguiente resultado:

Con rejilla

EDITAR: se agregó un ejemplo, basado en la respuesta de Andrey Sobolev

Respuestas:


219

Quieres usar 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.gridy ax.yaxis.gridpuede controlar las propiedades de las líneas de cuadrícula.

Ingrese la descripción de la imagen aquí


1
¿Alguna idea de por qué esto está produciendo una trama sin cuadrícula para mí?
— endolito

Oh, creo que es un matplotlibrcproblema, tenía el estilo de cuadrícula definido como líneas continuas y eso ya no funciona.
— endolito

1
En realidad debería funcionar. Al menos, funciona para mí: la configuración mpl.rcParams['grid.linestyle'] = "-"produce un gráfico con líneas de cuadrícula sólidas. ¿Cuál es tu grid.linestyle?
— Andrey Sobolev

Fue -. No sé por qué dejó de funcionar. Investigaré algún día.
— endolito

44
Alternativamente, podría ser mejor hacer ax.scatter(x,y)y ax.grid(True).
— foghorn

58

Para mostrar una línea de cuadrícula en cada marca, agregue

plt.grid(True)

Por ejemplo:

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

ingrese la descripción de la imagen aquí


Además, es posible que desee personalizar el estilo (por ejemplo, línea continua en lugar de línea discontinua), agregue:

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

Por ejemplo:

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

ingrese la descripción de la imagen aquí


17

Usando rcParams puede mostrar la cuadrícula muy fácilmente como sigue

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"

Si la cuadrícula no se muestra incluso después de cambiar estos parámetros, use

plt.grid(True)

antes de llamar

plt.show()


1

Aquí hay un pequeño ejemplo de cómo agregar una cuadrícula matplotlib en Gtk3 con Python 2 (no funciona en 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()

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.