227 votes

Comment dessiner une grille sur un graphique en Python ?

Je viens de finir d'écrire le code pour faire un tracé en utilisant pylab en Python et maintenant je voudrais superposer une grille de 10x10 sur le nuage de points. Comment dois-je procéder ?

Mon code actuel est le suivant :

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

Et sa sortie est :

Without grid

Ce que je voudrais, c'est le résultat suivant :

With grid

EDIT : Ajout d'un exemple, basé sur la réponse d'Andrey Sobolev.

282voto

Andrey Sobolev Points 2268

Vous voulez utiliser 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 y ax.yaxis.grid peut contrôler les propriétés des lignes de la grille.

Enter image description here

84voto

Jossef Harush Points 1656

Pour afficher une ligne de grille sur chaque tic, ajoutez

plt.grid(True)

Par exemple :

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

enter image description here


En outre, vous souhaiterez peut-être personnaliser le style (par exemple, une ligne pleine au lieu d'une ligne en pointillés), ajoutez :

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

Par exemple :

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

enter image description here

35voto

Ani Points 1093

Utilisation de rcParams vous pouvez afficher la grille très facilement comme suit

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 grille ne s'affiche pas même après avoir modifié ces paramètres, utilisez la fonction

plt.grid(True)

avant d'appeler

plt.show()

10voto

cyborg Points 5463

4voto

oxidworks Points 547

Voici un petit exemple pour ajouter une grille matplotlib dans Gtk3 avec Python 2 (ne fonctionne pas avec 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()

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X