pyplot 방식으로 그래프 그리기
plt.plot([1, 4, 9, 16])
plt.title('simple line graph')
plt.show()
객체지향 API 방식으로 그래프 그리기
fig, ax = plt.subplots()
ax.plot([1, 4, 9, 16])
ax.set_title('simple line graph')
fig.show()
폰트 지정하기: font.family 속성 사용
plt.rcParams['font.family'] = 'NanumGothic'
폰트 지정하기: rc() 함수 사용
# font.family의 경우
plt.rc('font', family='NanumGothic')
plt.rc('font', family='NanumGothic', size=11)
top30_pubs = ns_book7['출판사'].value_counts()[:30]
top30_pubs_idx = ns_book7['출판사'].isin(top30_pubs.index)
ns_book8 = ns_book7[top30_pubs_idx].sample(1000, random_state=42)
fig, ax = plt.subplots(figsize = (10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'])
ax.set_title('출판사별 발행 도서')
fig.show()
s 매개변수를 제공한다.
입력 데이터와 동일한 길이의 배열을 지정하면, 각 데이터마다 마커의 크기가 다른 산점도를 그릴 수 있다.
fig, ax = plt.subplots(figsize = (10, 8))
ax.scatter(ns_book8['발행년도'], ns_book8['출판사'], s = ns_book8['대출건수']) # 대출건수 열을 마커 크기로 전달 => 대출 건수가 많은 도서를 상대적으로 크게 그린다.
ax.set_title('출판사별 발행 도서')
fig.show()
figure 객체의 colorbar() 메서드에 전달한다.
하나의 피겨에 여러 선 그래프 그리기
plt.axis([1985, 2025], [0, 13000])
스택 영역 그래프 그리기
💡 pivot_table()
- pivot_table() 메서드를 사용하면 데이터의 구조를 변경할 수 있다.
💡 get_level_values()
- pandas의 인덱스 객체에서 호출이 가능.
- 다단으로 구성된 열 이름에서 선택한 항목만 가져올 수 있다. (인덱스로 접근, 0 이면 첫번째 항목)
하나의 피겨에 여러개의 막대 그래프 그리기
스택 막대 그래프 그리기
bar() 메서드의 bottom 매개변수를 사용하여 수동으로 쌓을 수 있다.
데이터 값 누적하여 그리기
cumsum() 메서드
를 사용하면 데이터 누적을 쉽게 할 수 있다.원 그래프 그리기
pie() 함수
를 사용해서 그린다.기본적으로 3시 방향부터 반시계 방향으로 데이터를 그린다.
💡 비율 표시하고 부채꼴 강조하기
%d
: 각 부채꼴의 비율이 정수로 표시됨.p.314의 손코딩 (matplotlib의 colormap으로 산점도 그리기)을
코랩에서 그래프로 출력하고 캡처하기
p356~359의 스택 영역 그래프를 그리는 과정을 정리하기
각 출판사의 연도별 대출건수를 구하기 위함.
# 만약 값이 없는 항목에 대해 기본 값을 주고 싶은 경우에는
# fill_value 매개변수에 기본 값을 지정하면 된다.
ns_book10 = ns_book9.pivot_table(index='출판사', columns='발행년도')
ns_book10.head()
다단으로 구성되어 있는 열에서 발행년도만 뽑아서 리스트로 만든다. get_level_values() 메서드 사용.
ns_book10.columns[:10] # 컬럼 10개 조회
top10_pubs = top30_pubs.index[:10]
# 다단 열 중 인덱스 1에 해당하는 값 조회
year_cols = ns_book10.columns.get_level_values(1)
legent() 메서드의 loc 매개변수로 범례의 위치를 지정할 수 있다.
fig, ax = plt.subplots(figsize=(8, 6))
ax.stackplot(year_cols, ns_book10.loc[top10_pubs].fillna(0), labels=top10_pubs)
ax.set_title('연도별 대출건수')
ax.legend(loc='upper left')
ax.set_xlim(1985, 2025)
plt.show()