혼자 공부하는 데이터분석 with 파이썬 06-1 복잡한 데이터 표현하기
pyplot 방식으로 그래프 그리기
plt.plot([1, 4, 9, 16])
plt.title('simple line graph')
plt.show()
객체지향 API 방식으로 그래프 그리기
피겨 객체와 Axes 객체를 사용하는 객체지향 API 방식으로 그림
fig, ax = plt.subplots()
ax.plot([1, 4, 9, 16])
ax.set_title('simple line graph')
fig.show()
폰트 지정하기1:font.family속성
기본 폰트 : 영문 sans-serif
plt.rcParams['font.family']
나눔고딕으로 변경
plt.rcParams['font.family'] = 'NanumGothic'
폰트 지정하기2: rc()함수
plt.rc('font', family='NanumBarunGothic')
여러 설정을 동시에 지정
예) 폰트 패밀리와 폰트 크기를 동시에 설정
plt.rc('font', family='NanumBarunGothic', size=11)
출판사별 발행 도서 개수 산점도 그리기
고유한 출판사 목록 만들기
value_counts()메서드를 사용하여 목록 만들기
카운트가 높은 순으로 결과를 내림차순으로 정렬
상위 30개 출판사를 선택하기 위해 슬라이스 연산자 사용
top30_pubs = ns_book7['출판사'].value_counts()[:30]
top30_pubs
상위 30개 출판사에 해당하는 불리언 인덱스 만들기
isin() 메서드사용
top30_pubs_idx = ns_book7['출판사'].isin(top30_pubs.index)
top30_pubs_idx
산점도를 그리기에는 데이터가 많아서 무작위로 1000개만 선택
1000개 선택: sample()메서드 사용
무작위성: random_state() 매개변수에 임의의 숫자 입력
ns_book8 = ns_book7[top30_pubs_idx].sample(1000, random_state=42)
ns_book8.head()
산점도 그리기
x축: 발행년도 y축: 출판사
subplots() 함수로 피겨의 크기 설정 (10,8)
fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'])
ax.set_title('출판사별 발행도서')
fig.show()
값에 따라 마커 크기를 다르게 나타내기
scatter()함수에 s 매개변수로 마커 크기 지정
기본값 : 6
다음처럼 대출건수 열을 마커크기로 전달하면 상대적으로 많은도서를 크게 그릴 수 있음
fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'], s=ns_book8['대출건수'])
ax.set_title('출판사별 발행도서')
fig.show()
마커 꾸미기
1) 투명도 조절
alpha 매개변수 : 마커의 진하기로 도서량 확인 가능
2) 마커 테두리 색 바꾸기
edgecolor 매개변수: 기본값은 'face' 마커가 겹칠 때 경계를 구분할 수 있음
ex) 검은색을 의미하는 'k'로 지정
3) 마커 테두리 선 두께 바꾸기
linewidths 매개변수 : 기본값은 1.5
4) 산점도 색 바꾸기
c 매개변수 : 데이터 개수와 동일한 길이의 배열을 전달하면 각 데이터를 다른 색깔로 그릴 수 있음
ex) c매개변수에 '대출건수'열을 전달하면 큰값: 밝은 노란색 낮은 값: 진한 녹색
fig, ax = plt.subplots(figsize=(10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'],
linewidths=0.5, edgecolors='k', alpha=0.3,
s=ns_book8['대출건수']*2, c=ns_book8['대출건수'])
ax.set_title('출판사별 발행도서')
fig.show()
값에 따라 색상 표현하기 : 컬러맵
viridis 컬러맵: 앞에서 사용한 컬러맵
jet 컬러맵: 낮은값=짙은 파란색 높은 값= 노란색-> 붉은 색
colorbar()메서드 : 컬러막대 그리기
fig, ax = plt.subplots(figsize=(10, 8))
sc = ax.scatter(ns_book8['발행년도'], ns_book8['출판사'],
linewidths=0.5, edgecolors='k', alpha=0.3,
s=ns_book8['대출건수']**1.3, c=ns_book8['대출건수'], cmap='jet')
ax.set_title('출판사별 발행도서')
fig.colorbar(sc)
fig.show()