Lecture 스타일링
- Matplotlib
스타일링
Artists를 위한 스타일 옵션이 있으며, 플롯 함수가 호출되면 Artists의 "setter"에 호출한다.
#prog1
data1, data2, data3, data4 = np.random.randn(4, 50)
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(':') # 선 스타일을 따로 지정
여기서, cumsum( )함수는 데이터들의 누적 합계를 나타내는 함수이다. prog1을 실행한 결과는 다음과 같다. 데이터는 랜덤하게 생성된다.
색상
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의 범례는 매우 유연하게 레이아웃, 배치할 수 있다.
Login to write a comment.