¿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.