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.grid
gebruiken:
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
en ax.yaxis.grid
kunnen 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()