Hoe teken ik een raster op een plot in Python?

Ik ben net klaar met het schrijven van code om een plot te maken met behulp van pylabin Python en nu ben ik wil een raster van 10×10 superponeren op de scatterplot. Hoe doe ik dat?

Mijn huidige code is de volgende:

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

En de output is:

Wat ik zou willen is de volgende uitvoer:

EDIT: voorbeeld toegevoegd, gebaseerd op het antwoord van Andrey Sobolev


Antwoord 1, autoriteit 100%

U wilt pyplot.gridgebruiken:

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.griden ax.yaxis.gridkunnen de eigenschappen van stramienlijnen beheren.


Antwoord 2, autoriteit 30%

Als u een rasterlijn wilt weergeven bij elk vinkje, voegt u

. toe

plt.grid(True)

Bijvoorbeeld:

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


Daarnaast wilt u misschien de stijl aanpassen (bijv. ononderbroken lijn in plaats van onderbroken lijn), toevoegen:

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

Bijvoorbeeld:

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


Antwoord 3, autoriteit 10%

Met rcParamskunt u het raster als volgt heel gemakkelijk weergeven

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"

Als het raster niet wordt weergegeven, zelfs niet na het wijzigen van deze parameters, gebruik dan

plt.grid(True)

voordat u belt

plt.show()

Antwoord 4, autoriteit 4%

De pylab-voorbeeldpaginais een zeer nuttige bron. Het voorbeeld dat relevant is voor uw vraag:

http://matplotlib.sourceforge.net/mpl_examples/pylab_examples/scatter_demo2.py
http://matplotlib.sourceforge.net/users/screenshots.html#scatter-demo


Antwoord 5

Hier is een klein voorbeeld hoe je een matplotlib-raster in Gtk3 kunt toevoegen met Python 2 (werkt niet 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()

Other episodes