파이썬에서 플롯에 그리드를 그리는 방법은 무엇입니까? [닫은]


170

파이썬에서 pylab 을 사용하여 플롯을 작성하는 코드 작성을 마쳤습니다. 이제 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.gridax.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

다음은 Python 2가있는 Gtk3에 matplotlib 그리드를 추가하는 방법에 대한 작은 예입니다 (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.