Bagaimana cara menggambar kisi ke plot di Python? [Tutup]

170

Saya baru saja selesai menulis kode untuk membuat plot menggunakan pylab dengan Python dan sekarang saya ingin menambahkan sebuah kotak 10x10 ke plot pencar. Bagaimana aku melakukan itu?

Kode saya saat ini adalah sebagai berikut:

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

Dan hasilnya adalah:

Tanpa kisi

Apa yang saya inginkan adalah output berikut:

Dengan grid

EDIT: Menambahkan contoh, berdasarkan jawaban Andrey Sobolev

LiamNeesonFan
sumber

Jawaban:

219

Anda ingin menggunakan 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.griddan ax.yaxis.griddapat mengontrol properti garis grid.

Masukkan deskripsi gambar di sini

Andrey Sobolev
sumber
1
Adakah ide mengapa ini menghasilkan plot tanpa kisi untuk saya?
endolith
Oh saya pikir itu matplotlibrcmasalah, saya memiliki gaya grid yang didefinisikan sebagai garis padat dan itu tidak berfungsi lagi?
endolith
1
Sebenarnya itu seharusnya berhasil. Setidaknya, itu berfungsi untuk saya - pengaturan mpl.rcParams['grid.linestyle'] = "-"tidak menghasilkan plot dengan garis kotak yang solid. Apa Anda grid.linestyle?
Andrey Sobolev
Itu tadi -. Saya tidak tahu mengapa itu berhenti bekerja. Saya akan menyelidiki suatu hari nanti.
endolith
4
Atau mungkin lebih baik dilakukan ax.scatter(x,y)dan ax.grid(True).
foghorn
57

Untuk menampilkan garis kisi pada setiap centang, tambahkan

plt.grid(True)

Sebagai contoh:

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

masukkan deskripsi gambar di sini


Selain itu, Anda mungkin ingin menyesuaikan penataan (mis. Garis solid dan bukan garis putus-putus), tambahkan:

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

Sebagai contoh:

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

masukkan deskripsi gambar di sini

Jossef Harush
sumber
17

Menggunakan rcParams Anda dapat menampilkan kisi dengan sangat mudah sebagai berikut

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"

Jika kisi tidak muncul bahkan setelah mengubah parameter ini maka gunakan

plt.grid(True)

sebelum menelepon

plt.show()
Ani
sumber
1

Berikut ini adalah contoh kecil cara menambahkan kisi matplotlib di Gtk3 dengan Python 2 (tidak berfungsi di 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()

masukkan deskripsi gambar di sini

pengoksidasi
sumber