- 1
- NumPy는 매트플롯립에서 데이터를 다루기 위해서 주로 사용된다.
- 2
-
matplotlib
패키지 전체를 임포트할 때는mpl
이라는 별칭을 사용한다. - 3
-
pyplot
모듈을plt
라는 별칭으로 임포트한다.
19 매트플롯립(matplotlib) 시각화
이 장에서는 파이썬 데이터 시각화에서 가장 기본이 되는 매트플롯립(Matplotlib) 패키지를 소개한다. Matplotlib은 2002년 존 헌터(John Hunter)에 시작된 패키지로 아주 오랜 역사를 가지고 있다.
최근에는 seaborn
같은 고급 패키지들이 많이 개발되어 있는데, 매트플롯립을 기반으로 개발되었기 때문에, 매트플롯립을 이해하고 있으면 이런 고급 패키지들을 이해하는 데에도 큰 도움이 된다.
매트플롯립은 매우 큰 패키지이기 때문에 한번에 이해하려고 시도하면 오히려 더 헷갈릴 수 있다. 핵심되는 개념을 잘 이해하고 나서 필요한 부분들은 AI 코딩 어시스턴트나 검색을 통해서 찾아보는 것이 좋다. 이 장에서는 매트플롯립의 기본적인 사용법과 개념을 소개하고, 그래프를 만드는 방법을 다룬다.
19.1 매프플롯립 임포트
패키지를 사용하기 위해서 먼저 임포트해야 한다.
매트플롯립(matplotlib)은 여러 모듈로 구성되어 있는데, 가장 많이 사용되는 모듈은 pyplot
이고, 대부분의 사람들은 이것을 plt
라는 별칭(alias)으로 임포트하기 때문에 이 관례를 따르는 것이 좋다.
전체 매트플로립을 mpl
로 임포트가 필요한 경우는 그다지 많지는 않지만 필요할 때가 있다.
19.2 매트플롯립을 사용하는 두 가지 방법(explicit vs implicit)
매트플롯립(matplotlib)을 사용할 때, 두 가지 주요 접근 방식이 있다: 명시적(explicit)과 묵시적(implicit).
- 명시적(explicit):
Figue
와Axes
객체를 명시적으로 생성하고, 이 객체들을 사용하여 그래프를 그리는 방법이다. 객체 지향(object oriented) 인터페이스라고도 불린다. - 묵시적(implicit):
pyplot
모듈을 사용하여 그래프를 그리는 방법으로,plt.plot()
과 같은 함수를 사용하여 그래프를 그린다. 상태 기반(state based) 인터페이스라고도 불린다.
웹에서 사례들을 보면, 때로는 명시적인 방법을 사용하고, 어떤 경우는 묵시적인 방법을 사용하기도 하고, 어떤 경우는 혼합되어 있기도 하여, 처음 시작하는 사람들은 어떤 방법을 사용해야 할지 혼란스러울 수 있다.
처음 배울 때는 명시적 방법을 사용하는 것이 좋다. 명시적 방법은 객체 지향(object oriented) 방식으로 코딩하기 때문에, 객체의 생성과 조작을 명확하게 이해할 수 있다. 또한, 명시적 방법은 코드의 가독성을 높이고, 유지보수를 용이하게 한다. 따라서, 여기서도 명시적 방법을 중심으로 설명한다.
19.2.1 코딩 방법의 차이
명식적 방법과 묵시적 방법의 차이를 이해하기 위해, 다음 예제를 살펴보자.
# 명시적(explicit) 방법으로 그래프 그리기
1= plt.figure()
fig 2= fig.subplots()
ax 3= np.arange(1, 100)
x = x**2
y 4 ax.plot(x, y)
- 1
-
Figure
객체를 생성한다. - 2
-
Figure
객체에Axes
객체를 추가한다. - 3
- x와 y 데이터를 생성한다.
- 4
-
Axes
객체를 사용하여 그래프를 그린다.
이와 같이 명시적 방법은 완전히 객체 지향(object oriented) 방식으로 코딩한다. 객체에 대한 모든 작업을 명시적으로 수행한다.
# 묵시적(implicit) 방법으로 그래프 그리기
= np.arange(1, 100)
x = x**2
y 1 plt.plot(x, y)
- 1
-
pyplot
모듈을 사용하여 그래프를 그린다.import matplotlib.pyplot as plt
로 임포트 했기 때문에plt
는matplotlib.pyplot
모듈의 별칭(alias)이다. 묵시적 방법은 상태 기반(state based) 방식으로 코딩한다.pyplot
모듈을 사용하는데, 내부적으로 현재의Figure
와Axes
객체를 유지하고 있다. 따라서,plt.plot()
과 같은 함수는 현재의Figure
와Axes
객체에 대해 작업을 수행한다. 현재Figure
는plt.gcf()
로, 현재Axes
는plt.gca()
로 접근할 수 있다.
print(plt.gcf()) # 현재 Figure 객체를 반환
Figure(672x480)
<Figure size 672x480 with 0 Axes>
19.3 Figure와 Axes 객체
매트플롯립(matplotlib)에서 그래프는 Figure
와 Axes
객체를 중심으로 구성된다. 여기서 왜 Axes
는 Axis
의 복수형 단어가 아닌 고유한 단어이기 때문에 이름을 있는 자체로 이해해야 한다. 매트플롯립에서 Axis
는 축을 조절하는 객체이다.
Axes
는 단순히 축(axis)을 의미하는 것이 아니라, 실제로 그래프가 그려지는 영역을 의미한다.
Figure
: 전체 캔버스Axes
Figure
내에서 실제 데이터를 시각화하는 영역- 따라서 실제로 그래프를 그리거나 조절하는 함수 대부분은 이
Axes
객체를 통해 수행된다.
실제 코딩 사례를 보자(명시적 방법).
# 데이터 생성
= np.linspace(-5, 2, 100)
x = x**3 + 5*x**2 + 10
y1 = 2*x**2 + 10*x
y2 = 6*x + 10
y3
# 명시적(explicit) 방법으로 그래프 그리기
1= plt.subplots()
fig, ax 2='blue', label='y(x)')
ax.plot(x, y1, color='red', label="y'(x)")
ax.plot(x, y2, color='green', label='y"(x)')
ax.plot(x, y3, color'x')
ax.set_xlabel('y')
ax.set_ylabel( ax.legend()
- 1
-
plt.subplots()
함수를 사용하여Figure
와Axes
객체를 생성한다. 이 함수는Figure
객체와Axes
객체를 동시에 반환한다. 아무런 인자를 주지 않으면 기본적으로 하나의Figure
와Axes
객체를 생성한다.fig
는Figure
객체이고,ax
는Axes
객체이다.plt.subplots()
함수는Figure
와Axes
객체를 동시에 (튜플로) 반환한다. 코드는 튜플 언패킹을 사용하여fig
와ax
로 나누었다. - 2
-
Axes
객체를 사용하여 그래프를 그린다.ax.plot()
함수를 사용하여 x와 y 데이터를 그래프에 추가한다.ax.set_xlabel()
과ax.set_ylabel()
함수를 사용하여 x축과 y축의 레이블을 설정한다.ax.legend()
함수를 사용하여 범례를 추가한다.
위 경우는 하나의 Axes 객체를 사용하여 그래프를 그렸다. 만약 여러 개의 Axes 객체를 사용하고 싶다면, plt.subplots()
함수에 인자를 주어서 여러 개의 Axes 객체를 생성할 수 있다.
# 여러 개의 Axes 객체 생성
1= plt.subplots(1, 3)
fig, axs # 각 Axes 객체에 그래프를 그린다.
20].plot(x, y1, color='blue', label='y(x)')
axs[1].plot(x, y2, color='red', label="y'(x)")
axs[2].plot(x, y3, color='green', label='y"(x)')
axs[# 각 Axes 객체에 레이블을 설정한다.
30].set_xlabel('x')
axs[1].set_xlabel('x')
axs[2].set_xlabel('x')
axs[0].set_ylabel('y')
axs[1].set_ylabel('y')
axs[2].set_ylabel('y')
axs[# 각 Axes 객체에 범례를 추가한다.
40].legend()
axs[1].legend()
axs[2].legend()
axs[ plt.show()
- 1
-
plt.subplots(1, 3)
함수를 사용하여 1행 3열의 Axes 객체를 생성한다. 이 경우axs
는 3개의 Axes 객체를 포함하는 배열이다.plt.subplots()
함수는 행(row)과 열(column)의 개수를 인자로 받을 수 있다. 예를 들어,plt.subplots(2, 2)
는 2행 2열의 Axes 객체를 생성한다. 그리고plt.subplots()
함수는Axes
객체를 Numpy 배열로 반환한다. 따라서, 여러 개의 Axes 객체를 생성할 때는 배열 인덱싱을 사용하여 각 Axes 객체에 접근할 수 있다.즉axs[0]
,axs[1]
,axs[2]
는 각각 첫 번째, 두 번째, 세 번째 Axes 객체를 의미한다.plt.subplots()
함수는Figure
객체와Axes
객체를 동시에 만들어 반환한다. 매트플롯립에는 이 함수 이외에도 다양한 방법으로Figure
와Axes
객체를 생성할 수 있다. 예를 들어,plt.figure()
함수를 사용하여Figure
객체를 생성하고,fig.add_subplot()
함수를 사용하여Axes
객체를 추가할 수도 있다. 뒤에서 다시 설명한다. - 2
-
각 Axes 객체에 그래프를 그린다.
axs[0].plot()
과 같은 방식으로 각 Axes 객체에 그래프를 그릴 수 있다. 이와 같이 여러 개의 Axes 객체를 사용하여 그래프를 그릴 때는 각 Axes 객체에 대해 개별적으로 작업을 수행한다.axs[0].plot()
함수는 선 그래프(line plot)를 그리는 함수이다. 이외에 다양한 그래프를 그리는 함수들이 있다. 예를 들어,axs[0].scatter()
는 산점도(scatter plot)를 그리고,axs[0].bar()
는 막대 그래프(bar plot)를 그린다. 이와 같이 각 Axes 객체에 대해 개별적으로 그래프를 그릴 수 있다. - 3
-
각 Axes 객체에 레이블을 설정한다.
axs[0].set_xlabel()
함수를 사용하여 각 Axes 객체에 레이블을 설정할 수 있다. - 4
-
마찬가지 방법으로 각 Axes 객체에 범례를 추가한다.
axs[0].legend()
함수로 각 Axes 객체에 범례를 추가한다.
19.3.1 Figure 객체 더 들여다 보기
Figure
객체는 매트플롯립에서 가장 상위 객체로, 전체 그래프의 캔버스를 의미한다. Figure
객체는 여러 개의 Axes
객체를 포함할 수 있으며, 이 Axes
객체들은 실제로 데이터를 시각화하는 영역이다.
plt.figure()
: 새로운Figure
객체를 생성한다. 이 함수는 빈 캔버스를 생성한다. 여기에 이후에Axes
객체를 추가할 수 있다.plt.figure()
에 여러 인자를 주어서 생성되는Figure
객체의 크기, 해상도, DPI 등을 조절할 수 있다. 예를 들어,plt.figure(figsize=(10, 5), dpi=100)
은 가로 10인치, 세로 5인치 크기의Figure
객체를 생성한다.- 생성된
Figure
객체에 대해add_axes()
메소드를 사용하여Axes
객체를 추가할 수 있다. 이 함수를 사용할 때는Axes
객체의 위치와 크기를 인자로 전달한다. 예를 들어,fig.add_axes([0.1, 0.1, 0.8, 0.8])
은Figure
객체의 왼쪽 아래 모서리에서 시작하여 너비와 높이가 각각 80%인Axes
객체를 추가한다. 함수 안의 리스트에[왼쪽, 아래, 너비, 높이]
를 지정하는데 이 값들은 0과 1 사이의 비율(Figure에 대한 상대인 크기)로 지정된다. 이 함수에도 여러 인자를 줘서 생성되는Axes
객체의 속성을 조절할 수 있다. 예를 들어,fig.add_axes([0.1, 0.1, 0.8, 0.8], facecolor='lightgray')
은 배경색을 연한 회색으로 설정한다.
= plt.figure(figsize=(8, 2.5), facecolor="#A2EEEB")
fig = fig.add_axes([0.1, 0.1, 0.8, 0.8], facecolor='#F2CDD7')
ax = np.linspace(-5, 5, 100)
x = x**2
y1 ='exp(x)', color='blue')
ax.plot(x, y1, label'x')
ax.set_xlabel('y'); ax.set_ylabel(
이렇게 plt.figure()
함수를 사용하여 Figure
객체를 생성할 수 있고, 앞선 예제에서 본 바와 같이 plt.subplots()
함수를 사용할 수도 있다. 이 메서드는 새로운 Figure
객체와 하나 이상의 Axes
객체를 동시에 생성해 주기 때문에 많이 사용된다. 이 함수는 행(row)과 열(column)의 개수를 인자로 받아, 여러 개의 Axes
객체를 생성할 수 있다. 위 코드를 plt.subplots()
를 사용하여 작성하면 다음과 같다.
1= plt.subplots(figsize=(8, 2.5), facecolor="#A2EEEB")
fig, ax 2'#F2CDD7')
ax.set_facecolor(= np.linspace(-5, 5, 100)
x = x**2
y1 ='exp(x)', color='blue')
ax.plot(x, y1, label'x')
ax.set_xlabel('y') ; ax.set_ylabel(
- 1
-
Figure
객체를 생성할 때figsize
와facecolor
인자를 사용하여 크기와 배경색을 설정한다.figsize
는(너비, 높이)
형태로 인치를 기준으로 한다.facecolor
는Figure
객체의 배경색을 설정한다. Axes 객체의 배경식은 다음과 같이set_facecolor()
메소드를 사용하여 설정한다. - 2
-
Axes
객체를 생성할 때set_facecolor()
메소드를 사용하여 배경색을 설정한다. 이 메소드는Axes
객체의 배경색을 설정한다.
19.3.2 Axes 객체 더 들여다 보기
Axes
객체는 Figure
객체 내에서 실제 데이터를 시각화하는 영역이다. 이 객체는 그래프를 그리는 데 필요한 다양한 메소드를 제공한다. 많이 사용되는 메서드를 우선 보자.
- 다양한 종류의 그래프를 그릴 수 있는 메소드들을 제공한다.
ax.plot()
: 선 그래프ax.scatter()
: 산점도ax.bar()
: 막대 그래프ax.hist()
: 히스토그램ax.boxplot()
: 박스 플롯
- 축과 레이블을 설정하는 메소드들을 제공한다.
ax.set_xlabel()
: x축의 레이블.ax.set_ylabel()
: y축의 레이블ax.set_title()
: 그래프의 제목
- 범례 추가 및 설정하는 메소드들을 제공한다.
ax.legend()
: 범례를 추가한다.label
인자를 사용하여 각 그래프의 레이블을 설정할 수 있다.
19.3.2.1 Axes 객체를 추가하는 또다른 방법
앞에서 Figure
객체를 만들고 fig.add_axes()
메소드를 사용하여 Axes
객체를 추가하는 방법을 살펴보았고, plt.subplots()
함수를 사용하여 Figure
객체와 Axes
객체를 동시에 생성하는 방법을 살펴보았다. plt.subplots(2, 3)
와 같이 행(row)과 열(column)의 개수를 인자로 주면, 여러 개의 Axes
객체를 생성할 수 있다. 이 경우 Axes
객체는 Numpy 배열로 반환된다. 여기서 추가로 fig.add_subplot()
메소드를 더 살펴보자.
fig.add_subplot()
:Figure
객체에 새로운Axes
객체를 추가하는 방법 가운데 하나이다. 이 메소드는 행(row), 열(column), 인덱스(index)를 인자로 받아, 여러 개의Axes
객체를 생성할 수 있다.fig.add_subplot(2, 2, 1)
은 2행 2열의 첫 번째Axes
객체를 생성한다.
= plt.figure(figsize=(8, 2.5), facecolor="#A2EEEB")
fig 1= fig.add_subplot(1, 3, 1)
ax1 = fig.add_subplot(1, 3, 2)
ax2 = fig.add_subplot(1, 3, 3) ax3
- 1
-
Figure
객체에 1행 3열의Axes
객체를 추가한다. 이 경우ax1
는 끝의1
에 따라 첫 번째Axes
객체를 의미하고,ax2
는 두 번째Axes
객체,ax3
는 세 번째Axes
객체를 의미한다. 여기서는 1부터 시작한다.
19.3.2.2 여러 종류의 그래프
매트플롯립(matplotlib)은 다양한 종류의 그래프를 그릴 수 있는 메소드를 제공한다. 여기서는 몇 가지 주요 그래프 종류를 살펴보자. 산점도(scatter plot), 막대 그래프(bar plot), 히스토그램(histogram), 박스 플롯(box plot) 등 다양한 그래프를 그릴 수 있다.
# 산점도(scatter plot)
= np.random.rand(100) * 10
x = np.random.rand(100) * 10
y = plt.subplots()
fig, ax ='blue', label='Data Points')
ax.scatter(x, y, color; plt.show()
# 막대 그래프(bar plot)
= np.arange(1, 6)
x = np.random.randint(1, 10, size=5)
y = plt.subplots(figsize=(8, 4), facecolor="#A2EEEB")
fig, ax ='blue', label='Bar Chart')
ax.bar(x, y, color plt.show()
# 히스토그램(histogram)
= np.random.randn(1000) # 정규분포를 따르는 데이터 생성
data = plt.subplots(figsize=(8, 4), facecolor="#A2EEEB")
fig, ax =30, color='blue', alpha=0.7, label='Histogram')
ax.hist(data, bins plt.show()
19.3.2.3 제목과 축의 레이블 설정
그래프에 제목과 축의 레이블을 설정하는 것은 그래프를 이해하는 데 중요한 요소이다. 매트플롯립에서는 set_title()
, set_xlabel()
, set_ylabel()
메소드를 사용하여 제목과 축의 레이블을 설정할 수 있다.
# 제목과 축의 레이블 설정
= np.linspace(-5, 5, 100)
x = x**2
y = plt.subplots(figsize=(8, 4))
fig, ax ='y = x^2', color='blue')
ax.plot(x, y, label'Quadratic Function')
ax.set_title('x')
ax.set_xlabel('y')
ax.set_ylabel(
ax.legend() plt.show()
매트플롯립에서 한글 폰트를 사용하기 위해서는 폰트를 설정해야 한다. AI assitant에게 질문해 보자. 다음과 같은 코드로 폰트를 설정할 수 있다. import matplotlib.font_manager as fm
로 폰트 매니저를 임포트하고, fm.FontProperties
를 사용하여 한글 폰트를 설정할 필요가 있을 수 있다. 그리고 한글 폰트를 사용할 때 마이너스 부호가 깨지는 문제를 방지하기 위해 plt.rcParams['axes.unicode_minus'] = False
를 설정해야 한다.
# 한글 폰트 설정
'font.family'] = 'NanumGothic'
plt.rcParams[# 마이너스 부호 깨짐 방지
'axes.unicode_minus'] = False plt.rcParams[
19.3.2.4 범례(legend) 추가
범례는 그래프에서 각 데이터 시리즈를 구분하기 위해 사용된다. 매트플롯립에서는 legend()
메소드를 사용하여 범례를 추가할 수 있다.
- 범례를 추가할 때는 각 데이터 시리즈에
label
인자를 사용하여 레이블을 지정해 준다. 이 레이블은 범례에 표시된다. ax.legend()
메소드를 호출하여 범례를 추가한다.label
인자를 읽어서 자동으로 범례를 생성한다.
# 범례 추가
= np.linspace(-5, 5, 100)
x = x**2
y1 = x**3
y2 = plt.subplots(figsize=(8, 4))
fig, ax 1='y = x^2', color='blue')
ax.plot(x, y1, label='y = x^3', color='red')
ax.plot(x, y2, label'다양한 함수 곡선')
ax.set_title('x')
ax.set_xlabel('y')
ax.set_ylabel(2
ax.legend() plt.show()
- 1
-
각 데이터 시리즈에
label
인자를 사용하여 레이블을 지정한다. 이 레이블은 범례에 표시된다. - 2
-
ax.legend()
메소드를 호출하여 범례를 추가한다. 이 메소드는label
인자를 읽어서 자동으로 범례를 생성한다.
19.4 점(Maker)와 선(Line) 스타일 설정
매트플롯립의 plot()
함수에서는 점(marker)과 선(line)의 스타일을 설정할 수 있다.
linestyle
: 선의 스타일을 설정한다. 예를 들어,'-'
는 실선,'--'
는 대시선,':'
는 점선 등을 의미한다.
color
: 선의 색상을 설정한다. 예를 들어,'blue'
,'red'
,'#FF5733'
등으로 색상을 지정할 수 있다.linewidth
: 선의 두께를 설정한다. 숫자로 지정하며, 기본값은 1이다.
# 선 스타일 설정
= np.linspace(-5, 5, 100)
x = x**2
y1 = x**3
y2 = x**4
y3 = plt.subplots(figsize=(8, 4))
fig, ax ='y = x^2', color='blue', linestyle='-', linewidth=2)
ax.plot(x, y1, label='y = x^3', color='red', linestyle='--', linewidth=1)
ax.plot(x, y2, label='y = x^4', color='green', linestyle=':', linewidth=1)
ax.plot(x, y3, label'다양한 함수 곡선')
ax.set_title('x')
ax.set_xlabel('y')
ax.set_ylabel(
ax.legend() plt.show()
산점도를 만들어 보자. 산점도는 scatter()
메소드를 사용하여 그릴 수 있다. 이 메서드에서 다음과 같은 키워드 인자를 사용하여 점의 스타일을 지정할 수 있다.
s
: 점의 크기를 설정한다. 기본값은plt.rcParams['lines.markersize']
의 제곱으로 설정되어 있다. 이 경우 36.0로 설정된다.c
: 점의 색상을 설정한다.- 매트플롯립은 여러 가지 방법으로 색상을 지정할 수 있다.
- 예를 들어,
'red'
,'blue'
,'#FF5733'
등으로 색상을 지정할 수 있다. - 색상을 지정하는 방법은 Specifying colors에서 확인할 수 있다.
marker
: 점의 모양을 설정한다. 예를 들어,'o'
는 원형,'s'
는 사각형,'^'
는 삼각형 등을 의미한다.- 마커의 종류는 matplotlib.markers 사이트에 확인할 수 있다.
# 샘플 데이터
= [1, 2, 3, 4, 5]
x = [2, 1, 4, 3, 5]
y
= plt.subplots()
fig, ax
ax.scatter(x, y)
# 제목과 레이블
"간단한 산점도")
ax.set_title("X축")
ax.set_xlabel("Y축")
ax.set_ylabel(
plt.show()
= [1, 2, 3, 4, 5]
x = [2, 1, 4, 3, 5]
y
= plt.subplots()
fig, ax 1=36, c='orange', marker='p', alpha=0.7) ax.scatter(x, y, s
- 1
-
s=36
: 점의 크기를 36으로 설정한다. 기본값은 36.0로 설정되어 있다.c=orange
s는 점의 색상을 주황색으로 설정한다.marker='p'
는 점의 모양을 다이아몬드로 설정한다.alpha=0.7
은 점의 투명도를 0.7로 설정한다.
ax.bar()
메소드를 사용하여 막대 그래프를 그릴 수 있다. 이 메소드에서 다음과 같은 키워드 인자를 사용하여 막대의 스타일을 지정할 수 있다.
width
: 막대의 너비를 설정한다. 기본값은 0.8이다.color
: 막대의 색상을 설정edgecolor
: 막대의 테두리 색상을 설정한다. 기본값은'black'
이다.
19.5 축(Axis) 설정
축(Axis)은 그래프의 중요한 요소이다. 앞에서 set_xlabel()
과 set_ylabel()
메소드를 사용하여 축의 레이블을 설정하고, set_title()
메소드를 사용하여 그래프의 제목을 설정하는 방법을 살펴보았다. 텍스트의 크기, 폰트, 색상 등을 설정할 수 있다.
fontname
: 텍스트의 폰트를 설정. 예를 들어,'Arial'
,'Times New Roman'
,'NanumGothic'
등의 값을 사용할 수 있다.fontsize
: 텍스트의 크기fontweight
: 텍스트의 두께를 설정한다.'normal'
,'bold'
,'light'
등의 값을 사용할 수 있다.color
: 텍스트의 색상을 설정한다.'red'
,'blue'
,'#FF5733'
등의 값을 사용할 수 있다.labelpad
: 축 레이블과 축 사이의 간격을 설정
# 축 설정
= np.linspace(-5, 5, 100)
x = x**2
y = plt.subplots(figsize=(8, 4))
fig, ax ='y = x^2', color='blue')
ax.plot(x, y, label'2차 함수 곡선', fontsize=16, fontweight='bold', color='black')
ax.set_title('x', fontsize=14, fontweight='bold', color='black')
ax.set_xlabel('y', fontsize=14, fontweight='bold', color='black')
ax.set_ylabel(=12, loc='upper left')
ax.legend(fontsize plt.show()
이외에도 축을 틱을 조정하거나, 축의 범위를 설정하는 등의 작업을 할 수 있다.
축의 틱(tick)을 조정하는 방법은 set_xticks()
와 set_yticks()
메소드를 사용하여 축의 틱 위치를 설정할 수 있다. 또한, set_xticklabels()
과 set_yticklabels()
메소드를 사용하여 축의 틱 레이블을 설정할 수 있다.
# 축의 틱 조정
= np.linspace(-5, 5, 100)
x = x**2
y = plt.subplots(figsize=(8, 4))
fig, ax ='y = x^2', color='blue')
ax.plot(x, y, label'2차 함수 곡선', fontsize=16, fontweight='bold', color='black')
ax.set_title('x', fontsize=14, fontweight='bold', color='black')
ax.set_xlabel('y', fontsize=14, fontweight='bold', color='black')
ax.set_ylabel(-5, -3, -1, 1, 3, 5])
ax.set_xticks(['-5', '-3', '-1', '1', '3', '5'], fontsize=12)
ax.set_xticklabels([0, 5, 10, 15, 20])
ax.set_yticks(['0', '5', '10', '15', '20'], fontsize=12)
ax.set_yticklabels([=12, loc='upper left')
ax.legend(fontsize plt.show()
19.6 Axes 테두리(Spines) 조절
Axes 객체의 테두리(Spines)는 그래프의 외곽선을 의미한다. 매트플롯립에서는 Axes
객체의 spines
속성을 사용하여 각 축의 테두리를 조절할 수 있다.
Axes.spines
은 파이썬 딕셔너리와 유사한 객체로, 각 축의 테두리에 대한 속성을 설정할 수 있다. right
, left
, top
, bottom
이라는 키를 가지고 있고, 각 키는 해당 축의 테두리를 나타낸다. 예를 들어, ax.spines['left']
는 왼쪽 축의 테두리를 의미한다.
set_visible()
: 테두리의 가시성을 설정한다.True
로 설정하면 테두리가 보이고,False
로 설정하면 테두리가 보이지 않는다.set_color()
: 테두리의 색상을 설정한다. 예를 들어,'red'
,'blue'
,'#FF5733'
등의 값을 사용할 수 있다.set_linewidth()
: 테두리의 두께를 설정한다. 숫자로 지정하며, 기본값은 1이다.
# Axes 테두리 조절
= np.linspace(-5, 5, 100)
x = x**2
y = plt.subplots(figsize=(8, 4))
fig, ax ='y = x^2', color='blue')
ax.plot(x, y, label'2차 함수 곡선', fontsize=16, fontweight='bold', color='black')
ax.set_title('x', fontsize=14, fontweight='bold', color='black')
ax.set_xlabel('y', fontsize=14, fontweight='bold', color='black')
ax.set_ylabel(# Axes 테두리 조절
1'left'].set_visible(True)
ax.spines[2'left'].set_color('blue')
ax.spines[3'left'].set_linewidth(2)
ax.spines[4'right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_visible(True)
ax.spines['bottom'].set_color('blue')
ax.spines['bottom'].set_linewidth(2)
ax.spines[=12, loc='upper left')
ax.legend(fontsize plt.show()
- 1
-
왼쪽 축의 테두리를 보이도록 설정한다.
set_visible(True)
로 설정하면 테두리가 보인다. - 2
- 왼쪽 축의 테두리 색상을 파란색으로 설정한다.
- 3
- 왼쪽 축의 테두리 두께를 2로 설정한다. 숫자로 지정하며, 기본값은 1이다.
- 4
-
right
,top
축의 테두리를 각각 보이지 않도록 설정한다.set_visible(False)
로 설정하면 해당 축의 테두리가 보이지 않는다.