지난번에 이어서 오늘은 막대그래프 그리기 두 번째 시간이다. 지난번 내용은 다음 링크를 따라가면 확인할 수 있다.


http://softwares.tistory.com/8


오늘은 막대그래프에 안내선을 추가하는 방법에 대해 공부를 했다. 지난시간과는 달리 필요한 명령을 한꺼번에 치고 실행을 시키기로 했다. 아, 그 전에 지난시간에 나오지 않던 한글문제부터 해결하고 가기로 하자.



그래프에 한글이 출력되지 않을 때

[Windows]+[E]버튼을 누르면 윈도우 탐색기가 뜬다. 여기서 본인 아이디를 클릭하면 그 폴더 안에 ".matplotlib"가 보일 것이다. 그 폴더로 가면 "fontList.json"이 보이는데, 이 파일을 다른 이름으로 바꾸거나 지운 다음 다시 Jupitor Notebook을 실행한다. 그러면 그 폴더에 새로은 "fontList.json"파일이 생긴다. 이제 이 파일을 만들기 전에 설치된 모든 글꼴은 Jupitor Notebook에서 사용 가능해진다. 한글사용은 지난번 포스트 뒷부분을 보면 확인이 가능하다. 다른 글꼴을 사용하고싶다면 좀전에 만든 "fontList.json"의 내용을 확인해보면 된다.



막대그래프에 선이 나타나게 하기


다음과 같이 "plt.grid(True)"를 설정하면 막대그래프 안에 안내선이 나타난다.



import numpy as np
import matplotlib.pyplot as plt
장르 = ('소설', '참고서', '잡지', '만화')
개수 = (12, 10, 24, 50)
plt.rcParams['font.family'] = 'NanumMyeongjo'
plt.grid(True)
plt.bar(장르, 개수)




이러니, 당연히 세로선이 없어야 한다고 한다. 그쯤은 다음과 같이 plt.grid내용을 바꾸면 된다.




import numpy as np
import matplotlib.pyplot as plt
장르 = ('소설', '참고서', '잡지', '만화')
개수 = (12, 10, 24, 50)
plt.rcParams['font.family'] = 'NanumMyeongjo'
plt.grid(axis='y')
plt.bar(장르, 개수)





이제는 선이 너무 없어서 잘 못세겠는 자료도 있다고 한다. 그래서 plt.grid내용을 바꾸고 plt.minorticks_on()을 추가했다.



import numpy as np
import matplotlib.pyplot as plt
장르 = ('소설', '참고서', '잡지', '만화')
개수 = (12, 10, 24, 50)
plt.rcParams['font.family'] = 'NanumMyeongjo'
plt.minorticks_on()
plt.grid(which='both', axis='y')
plt.bar(장르, 개수)



그러니 이번에는 선이 많아서 좋기는 한데, 여전히 세기가 어렵다고 한다. 책처럼 10, 20, 30... 에 굵은 선으로 해달라고 한다. 그래서 major와 minor에 해당하는 선의 굵기를 따로 지정해 주었다.



import numpy as np
import matplotlib.pyplot as plt
장르 = ('소설', '참고서', '잡지', '만화')
개수 = (12, 10, 24, 50)
plt.rcParams['font.family'] = 'NanumMyeongjo'
plt.minorticks_on()
plt.grid(which='major', linewidth = '0.8', axis = 'y')
plt.grid(which='minor', linewidth = '0.3', axis = 'y')
plt.bar(장르, 개수)




이쯤 되니까 만족을 한다. 코딩하기에 그다지 길지도 않은 내용이라서 할만하다고 했다. 그래서 문제집에서 막대그래프를 그려야 하는 것은 죄다 이렇게 그려 보았다. 그러다가 가로로 그리라는 문제가 나왔다. 가로로 그리는 것은 지난번에도 했는데, 이번에는 가로선에서 안내선이 나가야 하니까 다음과 같이 바꿔야 한다는 것을 잘 대답했다.



import numpy as np
import matplotlib.pyplot as plt
장르 = ('소설', '참고서', '잡지', '만화')
개수 = (12, 10, 24, 50)
plt.rcParams['font.family'] = 'NanumMyeongjo'
plt.minorticks_on()
plt.grid(which='major', linewidth = '0.8', axis = 'x')
plt.grid(which='minor', linewidth = '0.3', axis = 'x')
plt.barh(장르, 개수)






이정도 익히고 이런저런 자료를 입력하다가 다시 궁금한 것이 생겼다. 선의 개수가 자동으로 잡혀져서 실제 [Shift]+[Enter]를 치기 전까지는 어떤 그림이 나올지 모른다는 것이다. 그리고 개수를 세는데 소수점에다가도 안내선이 그려져서 불필요한 선도 있게 되는 것 같고... 그래서, 이것을 다음 시간의 주제로 잡기로 했다. 

+ Recent posts