Wie zeichne ich in Python ein Raster auf ein Diagramm? [geschlossen]


170

Ich habe gerade den Code für das Erstellen eines Diagramms mit Pylab in Python fertiggestellt und möchte nun ein Streuungsdiagramm von 10 x 10 überlagern. Wie mache ich das?

Mein aktueller Code lautet wie folgt:

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

Und seine Ausgabe ist:

Ohne Gitter

Was ich möchte, ist die folgende Ausgabe:

Mit Gitter

EDIT: Es wurde ein Beispiel hinzugefügt, das auf der Antwort von Andrey Sobolev basiert

Antworten:


219

Sie möchten verwenden 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.gridund ax.yaxis.gridkann die Eigenschaften von Gitterlinien steuern.

Geben Sie hier die Bildbeschreibung ein


1
Irgendeine Idee, warum dies für mich ein Grundstück ohne Raster erzeugt?
— Endolith

Oh, ich denke, es ist ein matplotlibrcProblem. Ich hatte einen Gitterstil als durchgezogene Linien definiert und das funktioniert nicht mehr.
— Endolith

1
Eigentlich sollte es funktionieren. Zumindest funktioniert es bei mir - die Einstellung mpl.rcParams['grid.linestyle'] = "-"erzeugt ein Diagramm mit durchgezogenen Gitterlinien. Was ist Ihr grid.linestyle?
— Andrey Sobolev

Es war -. Ich weiß nicht, warum es nicht mehr funktioniert. Ich werde eines Tages nachforschen.
— Endolith

4
Alternativ könnte es besser sein ax.scatter(x,y)und ax.grid(True).
— Nebelhorn

57

Fügen Sie hinzu, um bei jedem Häkchen eine Gitterlinie anzuzeigen

plt.grid(True)

Beispielsweise:

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

Geben Sie hier die Bildbeschreibung ein


Darüber hinaus möchten Sie möglicherweise das Styling anpassen (z. B. durchgezogene Linie anstelle der gestrichelten Linie). Fügen Sie Folgendes hinzu:

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

Beispielsweise:

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

Geben Sie hier die Bildbeschreibung ein


17

Mit rcParams können Sie das Raster sehr einfach wie folgt anzeigen

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"

Wenn das Raster auch nach Änderung dieser Parameter nicht angezeigt wird, verwenden Sie

plt.grid(True)

vor dem Anruf

plt.show()


1

Hier ist ein kleines Beispiel, wie Sie ein Matplotlib-Raster in Gtk3 mit Python 2 hinzufügen (funktioniert nicht 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()

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.