HOWTO · Matplotlib
Matplotlib에서 플롯 그리드를 표시하는 방법
Matplotlib 플롯에 `grid()`로 격자선을 추가하는 방법을 알아봅니다. 격자선의 색상과 선 스타일을 바꾸고, 세로선이나 가로선만 표시하는 방법도 설명합니다.
이 페이지의 내용
Matplotlib 플롯에서 show()를 호출하기 전에 grid()를 호출하면 격자선을 표시할 수 있습니다. 격자선의 색상, 선 스타일, 너비를 설정하거나 axis 매개변수로 세로선, 가로선 또는 두 방향을 모두 표시할 수 있습니다. 아래 예제에서는 먼저 선 그래프를 만든 뒤 격자선을 추가하고 스타일을 지정한 다음, 표시 방향을 비교합니다.
Matplotlib에서 일반 선 그래프 그리기
먼저 x와 y 값을 준비해 plot()에 전달합니다. 축 레이블을 보면 각 축이 무엇을 나타내는지 알 수 있습니다. 뒤의 예제에서도 같은 그래프를 사용하므로 격자선이 어떻게 달라지는지 비교하기 쉽습니다. 각 x 값은 같은 위치에 있는 y 값과 한 쌍을 이루며, 두 목록은 하나의 점 집합을 나타냅니다. plot()은 이 점들을 순서대로 연결합니다. 제목과 레이블은 선택 사항이지만, 데이터를 바꿔 직접 그래프를 만들 때 값이 무엇을 나타내는지 파악하는 데 도움이 됩니다. 이 단계의 좌표축에는 선과 눈금만 있고, 플롯 영역에는 격자선이 표시되지 않습니다. 변경되지 않는 예제 코드에 표시되는 그래프 제목과 축 레이블은 영어입니다.
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("My Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.show()
Matplotlib 플롯에서 grid() 사용하기
데이터를 그린 뒤 show()를 호출하기 전에 pyplot.grid()를 호출합니다. 이 호출은 현재 좌표축에 격자선을 추가하며, 먼저 플롯을 표시할 필요는 없습니다. 이 pyplot 예제에서 plot()은 활성 좌표축에 선을 그리고 grid()는 해당 좌표축의 격자선을 켭니다. 두 호출을 모두 show()보다 먼저 실행하면 Matplotlib이 완성된 그림을 한 번에 렌더링합니다. 이미 플롯이 있다면, 데이터를 다시 만들거나 레이블을 다시 지정할 필요 없이 플롯을 그리는 명령 뒤, 표시 명령 앞에 grid() 호출을 추가하면 됩니다. 격자선은 좌표축의 눈금 위치를 따라 그려지므로 플롯 데이터를 바꾸지 않고도 선의 값을 가늠하기 쉬워집니다.
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("My Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.grid()
plt.show()
Matplotlib에서 격자선 속성 변경하기
grid()에 스타일 옵션을 전달합니다. 예를 들어 color="r"은 빨간색을 선택하고, linestyle="dotted"는 점선을 그리며, linewidth=1은 얇은 선을 설정합니다. linewidth 값은 실수를 포함한 숫자일 수 있습니다. 아래의 짧은 색상 코드와 선 스타일 이름은 자주 쓰이는 예시이며, 가능한 값 전체를 나열한 것은 아닙니다. 이 키워드 인수들은 한 번의 호출에서 함께 사용할 수 있으므로 선 데이터나 플롯 자체를 바꾸지 않고 격자선 모양을 조정할 수 있습니다. 격자선을 더 옅거나 얇게 하면 데이터 선이 두드러지고, 대비되는 색을 사용하면 기준선을 쉽게 구별할 수 있습니다. 좌표축이나 그림의 다른 선과 함께 보아도 잘 식별되는 값을 선택하세요.
from matplotlib import pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
plt.title("My Plot")
plt.xlabel("X Axis")
plt.ylabel("Y Axis")
plt.plot(x, y)
plt.grid(color="r", linestyle="dotted", linewidth=1)
plt.show()
한 글자 색상 코드에는 b(파란색), g(초록색), r(빨간색), c(시안색), m(마젠타색), y(노란색), k(검은색), w(흰색) 등이 있습니다. 자주 쓰이는 선 스타일에는 - 또는 solid, -- 또는 dashed, -. 또는 dashdot, : 또는 dotted가 있습니다. linewidth는 색상이나 패턴과 별개로 선의 두께를 조정하며, 0.5나 1.5 같은 숫자를 받을 수 있습니다. 예제에서는 너비가 1인 빨간 점선을 사용합니다. Matplotlib은 이름으로 지정하는 색상과 다른 선 스타일 형식도 지원합니다. 특정 옵션이나 지원 값에 관한 자세한 내용은 링크된 API 참고 자료를 확인하세요.
세로선 또는 가로선 그리기
axis 매개변수로 격자선 방향을 선택합니다. axis="x"는 x축 눈금 위치에 세로 격자선을 그리고, axis="y"는 y축 눈금 위치에 가로 격자선을 그리며, axis="both"는 두 방향을 모두 그립니다. 기본값은 both입니다. 이 예제에서는 세 설정을 나란히 놓아 비교합니다. 이름은 격자선 위치를 정하는 축의 눈금을 따릅니다. x축 눈금은 플롯의 아래쪽과 위쪽에 있으므로 격자선은 세로로 뻗고, y축 눈금은 양쪽 가장자리에 있으므로 격자선은 가로로 뻗습니다. 여러 x 위치의 값을 비교하는 등 세로 기준선이 유용할 때는 axis="x"를 사용하세요. 그래프에서 높이를 비교하려면 axis="y"를 사용하면 됩니다. 두 좌표를 모두 따라가야 한다면 기본값을 그대로 두거나 axis="both"를 지정하세요. 각 서브플롯에는 자체 Axes 객체가 있으므로 반복문은 같은 데이터를 재사용하면서 각 패널에 하나씩 설정을 적용합니다. 변경되지 않는 예제와 그림의 패널 레이블은 영어입니다.
import matplotlib.pyplot as plt
x = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]
y = [200, 300, 300, 350, 380, 450, 500, 500, 520, 525, 530]
_, (horizontal, vertical, both) = plt.subplots(1, 3)
for axis, setting in ((horizontal, "y"), (vertical, "x"), (both, "both")):
axis.plot(x, y)
axis.grid(axis=setting, linestyle="dotted", color="b")
axis.set_title(f'axis="{setting}"')
plt.show()