1번 예시
val_c = df.groupby('fl')['cty'].mean()
val_h = df.groupby('fl')['hwy'].mean()
plt.figure(figsize = (10,5))
plt.plot(df['fl'].unique(), val_c, c = 'red', lw = 1, alpha = 0.5,
marker = 'o', ms = 3, mec = 'black', mfc = 'gray',
ls = 'dotted', label = 'cty')
plt.plot(df['fl'].unique(), val_h, c = 'blue', lw = 1, alpha = 0.5,
marker = 'o', ms = 3, mec = 'black', mfc = 'gray',
ls = 'dotted', label = 'hwy')
for idx,val in enumerate(val_c) :
plt.text(idx, val_c.iloc[idx] + 0.3,
round(val,3), ha = 'center')
for idx,val in enumerate(val_h) :
plt.text(idx, val_h.iloc[idx] + 0.3,
round(val,2), ha = 'center')
plt.legend()
plt.grid(axis = 'y', ls = ':')
plt.show()
👉 fl( fuel : 연료 타입 ) 으로 그룹화 후 각 그룹별 평균 도출
👉 plt.plot ( x축, y축, ... )
👉 c( color ), mec( markeredgecolor ) 등 축약어 사용 가능
👉 plt.grid : 그래프에 가이드 선 추가
for idx,val in enumerate(val_c) :
plt.text(idx, val_c.iloc[idx] + 0.3,
round(val,3), ha = 'center')
👉 enumerate : 값을 집어넣으면, 인덱스와 해당 값으로 나눠서 리턴.
❗plt.text 함수에 x/y축 좌표 넣어서 평균 표시 ( y 그대로 표시하면 마커와 동일한 위치 : 작은 값 더하기)
❗3번째 변수는 표시할 값. round 함수로 깔끔하게 표시
2번 예시
plt.figure(figsize = (10,5))
val2 = df.groupby('class')['hwy'].mean()
bar1 = plt.bar(df['class'].unique(), val2, color = 'blue')
for idx,rect in enumerate(bar1) :
plt.text(idx, rect.get_height() + 0.3, round(val2.iloc[idx],2), ha = 'center')
plt.title('average highway efficiency per class')
plt.xlabel('class', loc = 'center')
plt.ylabel('average hwy efficiency', loc = 'center')
plt.grid(axis = 'y', ls = ':')
plt.ylim(0,35)
plt.xticks(rotation = 45)
plt.show()
👉 plt.bar 를 따로 받아서 enumerate에 넣으면, 인덱스와 rect 객체 도출. get_height 등 메서드 활용
❗plt.text 의 y좌표 높이에 쓰기
👉 plt.barh : horizontal ( 수평 ) 막대그래프 사용가능
3번 예시
val_c = df.groupby('fl')['cty'].mean()
val_h = df.groupby('fl')['hwy'].mean()
idx = np.arange(5)
plt.figure(figsize = (10,5))
plt.bar(idx - 0.15, val_c, width = 0.25, label = 'mean_cty')
plt.bar(idx + 0.15, val_h, width = 0.25, label = 'mean_hwy') #bottom = val_c
plt.xticks(idx, df['fl'].unique())
plt.grid(axis = 'y', ls = ':')
plt.legend()
plt.show()
👉 누적막대그래프 : 그래프 겹쳐서 코드 작성하되, bottom = [아래에 둘 값] 옵션 추가
👉 다중막대그래프 : 그래프 겹쳐서 코드 작성하되, x축에 array 사용
❗np.arange : 리스트와 비슷한 이터레이터지만, 한번에 계산 가능함.
❗idx - 0.25 : array 에 한번에 0.25를 빼서 막대그래프 두 개의 위치가 겹치지 않음.
❗그래프의 x축에 array 를 사용했기에, xticks를 써서 별개로 x축 설정
'Coding & Data Analysis > Python' 카테고리의 다른 글
[파이썬] 미국 경제 데이터셋으로 머신러닝 배우기 <선형회귀> (1) | 2024.12.27 |
---|---|
파이썬 데이터 분석 쌩 기본기 : matplotlib 시각화 기초 (2) (1) | 2024.12.26 |
[Python] 파이썬 데이터 분석 쌩 기본기 : 데이터 다루기 (0) | 2024.12.24 |
[Python] 다중 막대 그래프와 array 오류 해결하기 (5) | 2024.09.21 |
[Python] Apply 함수 : 복수 인자 사용하는 방법 (1) | 2024.09.15 |