보통날의/데이터 시각화 공부
실무에서 바로 써먹을 데이터 분석 - 시각화(2) 병렬 막대차트
알 수 없는 사용자
2020. 7. 31. 23:19
7월 30일자 한국경제에 실린 기사 삼성 "3분기도 나쁘지 않다"…게임기용 D램·중저가폰이 '기대주'
삼성 "3분기도 나쁘지 않다"…게임기용 D램·중저가폰이 '기대주'
“1분기 실적 발표 때 신종 코로나바이러스 감염증(코로나19)이 ‘디지털 전환’의 변곡점이 될 것이라고 강조했습니다. 하반기에도 이런 흐름이 이어질 것입니다.” 한진만 삼성전자 DS부문 전�
news.naver.com
이 기사에 나오는 삼성전자 영업이익 그래프를 Python, Matplotlib을 통해 그려보았다
구체적인 소스코드는 아래 참고
# 삼성전자의 영업이익 데이터
data = {
'2019년 2분기':[7100,15600,34000,7500],
'2020년 2분기':[7300,19500,54300,3000]
}
plot_data = pd.DataFrame(data,index=['CE(소비자가전)','IM(정보기술&모바일)',
'반도체','디스플레이'])
# 그래프에 전반적으로 사용되는 컬러 정의
# #898989는 회색, #004098은 파란톤
face_color = '#F6F2DF'
bar_colors = ['#898989','#004098']
# 그래프 그리기, 사이즈는 넓직하게
fig = plt.figure(figsize=(10,3),facecolor=face_color)
ax = fig.add_subplot(1,1,1)
# 본격 그래프 그리기
widths = [-0.4,0.4]
x_lbl = plot_data.index
x = np.arange(len(x_lbl))
for count,col in enumerate(plot_data.columns):
y = plot_data[col]
#두 개의 바차트를 그리기 위해서는 겹치지 않게 x축 위치를 설정하는 것이 중요하다
ax.bar(x+widths[count]/2,y,
width=widths[0],
color=bar_colors[count],
label=col)
# 데이터 레이블 추가는 텍스트 하나씩 하나씩 진행되는 것임을 명심할 것!!
for x1,y1 in zip(x,y):
ax.annotate(y1,xy=(x1+widths[count]/2,y1+2000),
ha='center',fontweight='bold',
fontsize=13)
## 그래프 꾸미기
## 데이터 레이블을 추가하면 subplot 밖으로 나가기 때문에 ylim 범위를 확장
ax.set_ylim(0,y.max()*1.1)
## subplot의 테두리 지우기
for side in ['left','right','top']:
ax.spines[side].set_visible(False)
# 테두리와 틱 그리고 y축의 라벨 지우기
plt.tick_params(axis='both',which='both',bottom=False,left=False)
ax.set_yticklabels([])
# x축 설정
ax.set_xticks(x)
ax.set_xticklabels(x_lbl,fontsize=15)
# 그래프에 데이터 라벨 더하기
ax.legend(prop={'size':15},loc=1,
facecolor=face_color,edgecolor=face_color)
# 배경색 지정
ax.set_facecolor(face_color)
# 타이틀 넣기
title = '삼성전자 사업부문별 영업이익'
ax.set_title(title,fontsize=20,fontweight='bold',loc='left')
# 기타 문구 넣기
ax.text(-0.1,56000,'(단위 : 억원)',ha='right',fontsize=13)
ax.text(3,-13000,'자료:삼성전자',ha='left',fontsize=13)
plt.show()