강의노트 스타일링

조회수 67 • 댓글 0 • 수정 5개월 전 크게 보기  
  • Matplotlib
  • matplotlib

스타일링

Artists를 위한 스타일 옵션이 있으며, 플롯 함수가 호출되면 Artists의 "setter"에 호출한다.

fig, ax = plt.subplots(figsize=(5, 2.7))
x = np.arange(len(data1))
ax.plot(x, np.cumsum(data1), color='blue', linewidth=3, linestyle='--') #색상, 선폭, 선스타일을 지정
l, = ax.plot(x, np.cumsum(data2), color='orange', linewidth=2) # 색상, 선폭을 지정
l.set_linestyle(':') # 선 스타일을 따로 지정

색상

Matplotlib은 매우 유연한 색상 배열을 지원한다. 즉, 분산형 차트의 경우 마커의 가장자리가 내부와 다른 색상이 될 수 있다.

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.scatter(data1, data2, s=50, facecolor='C0', edgecolor='k')

선폭, 선스타일과 마커 크기

선 너비는 1포인트당 타이포그래피 포인트(1pt = 1/72인치)가 된다. 선 스타일 예시를 참조하세요.

마커 크기는 사용 중인 방법에 따라 다릅니다. 플롯은 마커 크기를 점으로 지정하며 마커의 '지름' 또는 너비이다. 분산은 마커의 크기는 영역에 비례한다. 다양한 마커 스타일이 있으며(마커 참조), 사용자가 직접 마커 스타일을 정의할 수도 있다(마커스타일 참조).

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.plot(data1, 'o', label='data1')
ax.plot(data2, 'd', label='data2')
ax.plot(data3, 'v', label='data3')
ax.plot(data4, 's', label='data4')
ax.legend()

라벨링

Axes 라벨과 텍스트

set_xlabel, set_ylabel 및 set_title은 지정된 위치에 텍스트를 추가하는 데 사용된다. 텍스트를 사용하여 플롯에 직접 텍스트를 추가할 수도 있습니다.

mu, sigma = 115, 15
x = mu + sigma * np.random.randn(10000)
fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')
# the histogram of the data
n, bins, patches = ax.hist(x, 50, density=True, facecolor='C0', alpha=0.75)

ax.set_xlabel('Length [cm]')  # x라벨
ax.set_ylabel('Probability')  # y 라벨
ax.set_title('Aardvark lengths\n (not really)')  # 타이틀
ax.text(75, .025, r'$\mu=115,\ \sigma=15$')  # text를 사용하여 원하는 위치에 글자를 넣을 수 있다.
ax.axis([55, 175, 0, 0.03])
ax.grid(True)

모든 텍스트 함수는 matplotlib.text.Text 인스턴스를 반환한다. 위 줄에서와 마찬가지로 텍스트 함수에 키워드 인수를 전달하여 속성을 사용자 지정할 수 있습니다.

텍스트에서 수학식 사용하기

Matplotlib은 모든 텍스트 표현식은 달러 기호로 둘러싸인 TeX 표현식을 작성하면 된다.

ax.set_title(r'$\sigma_i=15$')

여기서 r은 문자열이 원시 문자열이며 백슬래시를 파이썬 이스케이프로 처리하지 않음을 나타낸다. Matplotlib에는 TeX식 파서 및 레이아웃 엔진이 내장되어 있다(자세한 내용은 수학식 작성하기를 참조). LaTeX를 직접 사용하여 텍스트를 그래프에 넣을 수 있다.(LaTeX로 텍스트 렌더링을 참조).

주석

xy를 가리키는 화살표를 xytext의 텍스트에 연결하여 그래프에 주석을 달 수 있다.

fig, ax = plt.subplots(figsize=(5, 2.7))

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)
line, = ax.plot(t, s, lw=2)

ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05))

ax.set_ylim(-2, 2)

범례

범례 선이나 마커를 식별하기 위해 Axes.legend를 사용하기도 한다.

fig, ax = plt.subplots(figsize=(5, 2.7))
ax.plot(np.arange(len(data1)), data1, label='data1')
ax.plot(np.arange(len(data2)), data2, label='data2')
ax.plot(np.arange(len(data3)), data3, 'd', label='data3')
ax.legend()

Matplotlib의 범례는 매우 유연하게 레이아웃, 배치할 수 있다.

이전 글
다음 글
댓글
댓글로 소통하세요.