Come posso disegnare una griglia su una trama in Python? [chiuso]


171

Ho appena finito di scrivere il codice per creare una trama usando pylab in Python e ora vorrei sovrapporre una griglia di 10x10 alla trama scatter. Come lo faccio?

Il mio codice attuale è il seguente:

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

E il suo output è:

Senza griglia

Quello che vorrei è il seguente output:

Con griglia

EDIT: aggiunto un esempio, basato sulla risposta di Andrey Sobolev

Risposte:


219

Vuoi usare 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.gride ax.yaxis.gridpuò controllare le proprietà delle linee della griglia.

Inserisci qui la descrizione dell'immagine


1
Qualche idea sul perché questo stia producendo una trama senza griglia per me?
Endolith,

Oh, penso che sia un matplotlibrcproblema, avevo lo stile della griglia definito come linee continue e che non funziona più?
Endolith,

1
In realtà dovrebbe funzionare. Almeno, funziona per me - l'impostazione mpl.rcParams['grid.linestyle'] = "-"produce un diagramma con linee di griglia solide. Qual è il tuo grid.linestyle?
Andrey Sobolev,

Lo è stato -. Non so perché abbia smesso di funzionare. Un giorno indagherò.
Endolith,

4
In alternativa, potrebbe essere meglio fare ax.scatter(x,y)e ax.grid(True).
nebbia

58

Per mostrare una linea della griglia su ogni segno di spunta, aggiungi

plt.grid(True)

Per esempio:

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

inserisci qui la descrizione dell'immagine


Inoltre, potresti voler personalizzare lo stile (ad es. Linea continua anziché linea tratteggiata), aggiungere:

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

Per esempio:

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

inserisci qui la descrizione dell'immagine


17

Usando rcParams puoi mostrare la griglia molto facilmente come segue

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"

Se la griglia non viene visualizzata anche dopo aver modificato questi parametri, utilizzare

plt.grid(True)

prima di chiamare

plt.show()


1

Ecco un piccolo esempio su come aggiungere una griglia matplotlib in Gtk3 con Python 2 (non funziona in 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()

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.