개수가 많은 라인을 출력할 때, plt.figure() 도화지에 설정한 도화지 크기에 맞추어 x축에 틱(tick) 간격이 알아서 나타난다. 틱 간격과 표시 방법을 마음 껏 정하는 예제를 만들어보았다.
여기서는 크게 아래 두 가지 재료에 자잘한 재료 세 가지를 더 쓰면 된다. 예제를 가져다 필요한 부분만 수정해서 쓰면 된다.
-
plt.subplot().xaxis.set_major_locator() : 틱 간격 나타낼 놈
-
plt.subplot().xaxis.set_major_formatter() : 아래 포맷터를 쓸 놈
-
plt.MultipleLocator() : 어느 간격으로 틱을 표시할 거냐
-
plt.FuncFormatter() : 아래 포맷 함수를 가져다 쓸 놈
-
format_func : 커스텀 함수. 이름은 아무거나 쓰자.
아래 함수들에 0 부터 pi까지 값을 1000개로 쪼개서 넣자.
f0 = lambda x : 5 + x - x | |
f1 = lambda x : 2 * np.cos(2 * np.pi * x - np.pi / 2) | |
f2 = lambda x : 3 * np.cos(4 * np.pi * x) | |
f = lambda x : f0(x) + f1(x) + f2(x) | |
x = np.linspace(0, np.pi, 1000) |
화면에 그림으로 나타내보자.
plt.figure(figsize=(12,2.5),dpi=160) | |
ax = plt.subplot() | |
plt.plot(f(x),color='blue',label='f(x)') | |
plt.plot(f0(x),':',label='5') | |
plt.plot(f1(x),':',label='$\cos (2\pi x - \pi/2)$') | |
plt.plot(f2(x),':',label='$\cos (4\pi x)$') | |
ax.xaxis.set_major_locator(plt.MultipleLocator(250)) | |
ax.xaxis.set_major_formatter(plt.FuncFormatter(format_func)) | |
plt.legend() | |
plt.show() |
x 값이 1000개 들어갔지만 7번 라인에서 250개 마다 틱을 보이도록 했다. 그리고 각 틱 마다 8번 라인에서 포맷 함수에 따라 특정한 형태로 표시하도록 했다.
포맷 함수는 아래처럼 만들어 쓴다.
def format_func(value, tick_number): | |
N = int(value) | |
if N == 0: | |
return '$N$' | |
elif N == 250: | |
return '$\pi/4$' | |
elif N == 1000: | |
return '$\pi$' | |
else: | |
return f'${N//250}\pi/4$' |
그러고 나면 아래 그림이 나타난다.

코드 합체 버전은 아래
f0 = lambda x : 5 + x - x | |
f1 = lambda x : 2 * np.cos(2 * np.pi * x - np.pi / 2) | |
f2 = lambda x : 3 * np.cos(4 * np.pi * x) | |
f = lambda x : f0(x) + f1(x) + f2(x) | |
x = np.linspace(0, np.pi, 1000) | |
def format_func(value, tick_number): | |
N = int(value) | |
if N == 0: | |
return '$N$' | |
elif N == 250: | |
return '$\pi/4$' | |
elif N == 1000: | |
return '$\pi$' | |
else: | |
return f'${N//250}\pi/4$' | |
plt.figure(figsize=(12,2.5),dpi=160) | |
ax = plt.subplot() | |
plt.plot(f(x),color='blue',label='f(x)') | |
plt.plot(f0(x),':',label='5') | |
plt.plot(f1(x),':',label='$\cos (2\pi x - \pi/2)$') | |
plt.plot(f2(x),':',label='$\cos (4\pi x)$') | |
ax.xaxis.set_major_locator(plt.MultipleLocator(250)) | |
ax.xaxis.set_major_formatter(plt.FuncFormatter(format_func)) | |
plt.legend() | |
plt.savefig('./example.png') | |
plt.show() |
'노트정리 > 시각화 Visualization' 카테고리의 다른 글
matplotlib에서 축(axis)에 사용자 정의 포맷팅 적용 방법 재정리 (0) | 2024.03.03 |
---|---|
matplotlib 에서 이미지 저장(savefig) 할 때, 하단이 잘리는 문제 해결법 (0) | 2021.03.31 |
matplotlib 에서 한글 쓰기 (0) | 2020.04.27 |