이것은 막내와 내가 초4-1과정 수학 5단원을 컴퓨터로 해보자는 취지에서 시작한 간단한 파이썬 프로그래밍이다. 딱 그 단원만 할 수 있게 하는 것이 목표다.




벌써 일주일이 다돼간다. 2일에 한 번 꼴로 알려주려니 힘들다 ㅠㅠㅠ


오늘은 지난시간에 막내가 원했던거... 눈금 제어에 대한 것을 해보기로 한다. 여러 가지 방법이 있지만, 알아본 것들 중 가장 간단한 방법으로 진행을 하기로 했다.




눈금제어


앞서 그렸던 동물수에 대한 소스를 다시 보자.



import numpy as np
import matplotlib.pyplot as plt

animals = ('cat', 'dog', 'rabbit', 'horse')
numbers = (1, 2, 3, 4)

plt.grid(axis='y')
plt.bar(animals, numbers)



위에서 알 수 있듯이, 개수로 의미가 없은 소수점들도 표시가 된다. 이것을 의미있게 만들려면 다음과 같은 방법을 사용한다.



import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker # 추가된 부분

animals = ('cat', 'dog', 'rabbit', 'horse')
numbers = (1, 2, 3, 4)

ax = plt.axes()
ax.yaxis.set_major_locator(ticker.MultipleLocator(1)) # 추가된 부분
plt.grid(axis='y')
plt.bar(animals, numbers)



이제야 그럴듯하게 나타나고 있다. 


한편, 자료가 5의 배수로만 나타나고 보조눈금선도 5의 배수로만 표현하고싶을 때는 다음과 같이 하면 된다.



import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

장르 = ('소설', '참고서', '잡지', '만화')
개수 = (15, 10, 25, 50)

plt.rcParams['font.family'] = 'NanumMyeongjo'   # 지난번에 했듯이 이것은 한글처리를 위해 필요

ax = plt.axes()
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(5))  # 마이너 티커가 필요하고 5의 배수마다 설정
plt.grid(which='major', linewidth = '0.8', axis = 'y')
plt.grid(which='minor', linewidth = '0.3', axis = 'y')
plt.bar(장르, 개수)





각 축에 라벨 달기


각 축에 라벨을 달려면 xlabel과 ylabel을 써서 다음과 같이 하면 된다.



import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

장르 = ('소설', '참고서', '잡지', '만화')
개수 = (15, 10, 25, 50)

plt.rcParams['font.family'] = 'NanumMyeongjo'

ax = plt.axes()
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(5))
plt.grid(which='major', linewidth = '0.8', axis = 'y')
plt.grid(which='minor', linewidth = '0.3', axis = 'y')
plt.xlabel("장르", fontsize=12)                      # x축 라벨을 설정함
plt.ylabel("개수(단위:권)", fontsize=12)             # y축 라벨을 설정함
plt.bar(장르, 개수)


차트 제목 달기


제목을 달려면 title을 사용하면 된다.


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

장르 = ('소설', '참고서', '잡지', '만화')
개수 = (15, 10, 25, 50)

plt.rcParams['font.family'] = 'NanumMyeongjo'

ax = plt.axes()
ax.yaxis.set_major_locator(ticker.MultipleLocator(10))
ax.yaxis.set_minor_locator(ticker.MultipleLocator(5))
plt.grid(which='major', linewidth = '0.8', axis = 'y')
plt.grid(which='minor', linewidth = '0.3', axis = 'y')
plt.xlabel("장르", fontsize=12)
plt.ylabel("개수(단위:권)", fontsize=12)
plt.title("소장도서분류", fontsize = 20)   # 차트 제목 달기
plt.bar(장르, 개수)



+ Recent posts