Repository navigation
Expand file tree
/
Copy pathbasicEx.py
More file actions
76 lines (64 loc) · 2.74 KB
/
Copy pathbasicEx.py
File metadata and controls
76 lines (64 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# matplotlib 첫 그래프
#
# 실행하면 output/ 폴더에 PNG 파일이 생깁니다.
# 창을 띄워 보고 싶으면 아래 SHOW 를 True 로 바꾸세요.
import matplotlib.pyplot as plt
import krfont
krfont.apply()
SHOW = False # True 로 바꾸면 그래프 창이 뜹니다
print('========== 가장 단순한 그래프 ==========')
plt.plot([1, 2, 3, 4], [10, 25, 18, 30])
plt.savefig('output/01_simple.png', dpi=100, bbox_inches='tight')
if SHOW:
plt.show()
plt.close() # 다 그렸으면 닫는다. 안 닫으면 다음 그림에 겹쳐 그려진다
print('01_simple.png 저장')
print('\n========== 제목·축 이름 붙이기 ==========')
월 = [1, 2, 3, 4, 5, 6]
매출 = [355, 201, 268, 302, 142, 327]
plt.plot(월, 매출, marker='o')
plt.title('월별 매출')
plt.xlabel('월')
plt.ylabel('매출 (천원)')
plt.grid(True, alpha=0.3)
plt.savefig('output/02_labeled.png', dpi=100, bbox_inches='tight')
if SHOW:
plt.show()
plt.close()
print('02_labeled.png 저장')
print('\n========== 두 가지 방식 : pyplot 과 객체 지향 ==========')
# (가) pyplot 방식 — plt.xxx() 를 죽 나열한다. 짧고 빠르다.
plt.plot(월, 매출)
plt.title('pyplot 방식')
plt.savefig('output/03_pyplot.png', dpi=100, bbox_inches='tight')
plt.close()
# (나) 객체 지향 방식 — Figure 와 Axes 를 변수로 받아 다룬다.
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot(월, 매출)
ax.set_title('객체 지향 방식')
ax.set_xlabel('월')
ax.set_ylabel('매출')
fig.savefig('output/04_oop.png', dpi=100, bbox_inches='tight')
plt.close(fig)
print('03_pyplot.png / 04_oop.png 저장')
print('''
Figure 와 Axes
Figure : 도화지 한 장 (창 하나)
Axes : 그 위에 놓인 그래프 한 개 (x축·y축이 있는 영역)
한 Figure 에 Axes 를 여러 개 놓을 수 있습니다 (subplotEx.py)
어느 방식을 쓸까
그래프가 하나면 pyplot 이 짧습니다.
여러 개를 배치하거나 나중에 손볼 거라면 객체 지향이 확실합니다.
실무 코드와 공식 문서는 대부분 객체 지향입니다.
''')
print('========== 저장 옵션 ==========')
fig, ax = plt.subplots(figsize=(8, 3)) # 가로 8인치, 세로 3인치
ax.plot(월, 매출, color='crimson', linewidth=2)
ax.set_title('저장 옵션 비교')
fig.savefig('output/05_options.png',
dpi=150, # 해상도. 화면용 100, 인쇄용 300
bbox_inches='tight') # 여백을 잘라 낸다. 제목이 잘리는 것도 막아 준다
plt.close(fig)
print('05_options.png 저장 (dpi=150)')
print('\n※ plt.close() 를 빼먹으면 그림이 계속 쌓여 다음 그래프에 겹칩니다.')
print('※ 반복문 안에서 그림을 그릴 때는 특히 조심하세요 (메모리도 샙니다).')