ฉันจะวาดกริดบนพล็อตใน Python ได้อย่างไร [ปิด]


170

ฉันเพิ่งเขียนโค้ดเพื่อสร้างพล็อตโดยใช้pylabใน Python และตอนนี้ฉันต้องการวางตารางขนาด 10x10 ลงในสแกตเตอร์กระจาย ฉันจะทำอย่างไร

รหัสปัจจุบันของฉันคือ:

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

และผลลัพธ์คือ:

ไม่มีกริด

สิ่งที่ฉันต้องการคือผลลัพธ์ต่อไปนี้:

พร้อมกริด

แก้ไข: เพิ่มตัวอย่างจากคำตอบของ Andrey Sobolev

คำตอบ:


219

คุณต้องการใช้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และax.yaxis.gridสามารถควบคุมคุณสมบัติเส้นกริด

ป้อนคำอธิบายภาพที่นี่


1
ความคิดใด ๆ ที่ว่าทำไมนี่คือการสร้างพล็อตที่ไม่มีกริดสำหรับฉัน
endolith

โอ้ฉันคิดว่ามันเป็นmatplotlibrcปัญหาฉันมีสไตล์กริดที่กำหนดเป็นเส้นทึบและนั่นไม่ทำงานอีกต่อไป?
endolith

1
ที่จริงมันควรจะทำงาน อย่างน้อยก็ใช้งานได้สำหรับฉัน - การตั้งค่าmpl.rcParams['grid.linestyle'] = "-"สร้างพล็อตที่มีเส้นตารางทึบ คุณคือgrid.linestyleอะไร
Andrey Sobolev

-มันเป็น ฉันไม่รู้ว่าทำไมมันหยุดทำงาน ฉันจะตรวจสอบซักวัน
endolith

4
อีกวิธีหนึ่งคือมันอาจจะดีกว่าที่จะทำและax.scatter(x,y) ax.grid(True)
Foghorn

57

หากต้องการแสดงเส้นกริดบนทุกเห็บให้เพิ่ม

plt.grid(True)

ตัวอย่างเช่น:

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

ป้อนคำอธิบายรูปภาพที่นี่


นอกจากนี้คุณอาจต้องการปรับแต่งสไตล์ (เช่นเส้นทึบแทนเส้นประ) เพิ่ม:

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

ตัวอย่างเช่น:

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

ป้อนคำอธิบายรูปภาพที่นี่


17

การใช้rcParamsคุณสามารถแสดงกริดได้ง่ายมากดังนี้

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"

หากตารางไม่แสดงแม้หลังจากเปลี่ยนพารามิเตอร์เหล่านี้ให้ใช้

plt.grid(True)

ก่อนโทร

plt.show()


1

นี่คือตัวอย่างเล็ก ๆ วิธีเพิ่มตาราง matplotlib ใน Gtk3 ด้วย Python 2 (ไม่ทำงานใน 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()

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.