맷플롯립 그래프를 담는 객체
- figure, rcParams, subplot
Figure 객체
- figsize 매개변수: 그래프의 크기를 튜플로 지정 가능
- 기본 그래프 크기 (6,4)
- 맷플롯립의 DPI 기본값은 72로 1인치를 몇 개의 점으로 표현하는지 보여주는 DPI가 제대로 설정이 되어 있지 않으면 figsize 매개변수에 지정한 대로 그래프가 그려지지 않기도 한다.
plt.figure(figsize=(900/72,600/72))
- 그럴 때는, 픽셀 값을 DPI값으로 나누면 인치 값을 구할 수 있다.
- 코랩 노트북은 기본적으로 맷플롯립 그래프를 출력시 타이트 레이아웃( 공백 최소화)을 사용한다.
%config InlineBackend.print_figure_kwargs = {'bbox_inches': None}
- 타이트 레이아웃을 사용하지 않으려면 bbox_inches 옵션을 None으로 지정하면 된다.
- dpi 매개변수는 그래프 크기를 바꿔준다.
rcParams 객체
- rcParams는 맷플롯립 그래프의 기본값을 관리하는 객체이다.
- rcParams 객체는 객체에 담긴 값을 출력하는 것뿐만 아니라 새로운 값으로 바꿀 수도 있다.
- 여기서는 figure 객체의 DPI 기본값을 100으로 바꾸고 산점도 마커 모양을 별로 지정하였다.
맷플롯립 마커 옵션 : https://matplotlib.org/stable/api/markers_api.html#module-matplotlib.markers
matplotlib.markers — Matplotlib 3.9.1 documentation
matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: Note that special symbols can be defined via the STIX math font, e.g. "$\u266B$". For an overview over t
matplotlib.org
rcParams 객체 설정 목록: https://matplotlib.org/stable/api/matplotlib_configuration_api.html#default-values-and-styling
서브플롯 그리기:subplots() 함수
- 하나의 피겨 객체 안에는 여러개의 서브플롯을 담을 수 있다.
- 서브플롯이란 맷플롯립의 Axes 클래스의 객체를 말하며 하나의 서브플롯은 두 개 이상의 축을 포함한다.
- subplots(2)는 두 개의 서브플롯을 그리는 것을 의미한다.
- axs[0] 은 첫 번째 그래프로 산점도를 그리고 있으며 axs[1]은 두 번째 그래프인 히스토그램을 그리게 했다.
- set_title() 메서드를 사용하면 그래프에 제목을 지정할 수 있다.
fig,axs= plt.subplots(1,2,figsize=(10,4))
axs[0].scatter(ns_book7['도서권수'],ns_book7['대출건수'],alpha=0.1)
axs[0].set_title('scatter plot')
axs[0].set_xlabel('number of books')
axs[0].set_ylabel('borrow count')
axs[1].hist(ns_book7['대출건수'],bins=100)
axs[1].set_title('histogram')
axs[1].set_xlabel('borrow count')
axs[1].set_ylabel('frequency')
axs[1].set_yscale('log')
fig.show()
- 서브플롯을 가로로 나란히 출력하기 위해서는 subplots() 함수에 행과 열을 지정한다.
- subplots(2)에서 2는 행을 의미한다.
- set_xlabel(),set_ylabel() 메서드를 통해 서브플롯의 축 이름도 지정할 수 있다.
선 그래프와 막대 그래프 그리기
- 선 그래프는 데이터 포인트 사이를 선으로 이은 그래프
- 막대 그래프는 데이터 포인트의 크기를 막대 높이로 나타내는 그래프
연도별 발행 도서 개수 구하기
- valune_counts() 메서드 : 고유한 값의 등장 횟수를 계산 (내림차순으로 정렬한다.)
- sort_index()메서드는 인덱스 순서대로 데이터를 정렬한다.
주제별 도서 개수 구하기
- 주제분류번호가 8에 속하는 도서가 가장 많은 것으로 알 수 있다.
명목형 데이터: 순서를 매길 수 없는 데이터 (성별,국가 등)
순서형 데이터: 순서가 있는 데이터(성적, 만족도 등)
선 그래프 그리기
- plot() 함수는 선 그래프를 그리게 해준다.
- plot()함수의 두 매개변수에 연도(index)와 도서 개수(values)을 각각 지정하여 선 그래프를 그린 모습이다.
plt.plot(count_by_year, marker='.', linestyle =':', color='red')
plt.plot(count_by_year,'.:r')
- marker, linestyle, color 매개변수를 통해 각각 원하는 그래프를 그릴 수 있다.
- plot()함수의 매개변수에 지정한 옵션들을 하나의 문자열로 지정할 수도 있다.( 2번째 줄 코드)
- annotate()함수는 그래프에 값을 표시한다.
- xytext 매개변수는 텍스트 위치를 조절해준다.
- 상대적인 위치를 포인트나 픽셀 단위로 지정해야 할 때는 textcoords ='offset points'를 지정해준다.
막대 그래프
- bar()함수는 막대 그래프를 그린다.
- xytext =(0,2)로 지정하여 y축 방향으로 2포인트씩 간격을 띄웠다.
- width 매개변수는 막대의 두께를 조절해준다.
- ha 매개변수는 텍스트 위치 조절을 해준다.
-fontsize 매개변수는 텍스트 크기를 지정해준다.
plt.barh(count_by_subject.index, count_by_subject.values, height=0.7, color='blue')
plt.title('Books by subject')
plt.xlabel('subject')
plt.ylabel('number of books')
for idx, val in count_by_subject.items():
plt.annotate(val,(val,idx),xytext=(2,0),textcoords='offset points', fontsize= 8, va='center',color='green')
plt.show()
- 가로 막대 그래프를 그릴 때는 barh()함수를 사용한다.
- width 매개변수는 height 매개변수로 변하며 x축과 y축의 이름을 바꾸어 써야 한다.
- 텍스트 정렬시 va 매개변수를 사용한다.
더 알아보기
- matplotlib.pyplot.imread() : 이미지 파일을 넘파이 배열로 읽어들인다.
- matplotlib.pyplot.imshow(): 이미지를 출력한다.
- matplotlib.pyplot.imsave(): 넘파이 배열을 이미지 파일로 저장한다.
- matplotlib.pyplot.savefig(): 그래프를 이미지로 저장한다. plt.show() 함수 이전에 호출한다.
숙제
'공부 > python' 카테고리의 다른 글
혼공학습단 12기를 마치며.. (0) | 2024.08.18 |
---|---|
혼자 공부하는 데이터 분석 6주차: 복잡한 데이터 표현하기 (0) | 2024.08.18 |
혼자 공부하는 데이터 분석 4주차: 데이터 요약하기 (0) | 2024.07.28 |
혼자 공부하는 데이터 분석 3주차: 데이터 정제하기 (0) | 2024.07.21 |
혼자 공부하는 데이터 분석 2주차: 데이터 수집하기 (0) | 2024.07.14 |