함께하는 데이터 분석

[Python] Matplotlib 막대그래프 그리기 본문

데이터분석 공부/Python

[Python] Matplotlib 막대그래프 그리기

JEONGHEON 2022. 4. 4. 22:00

오늘은 matplotlib을 이용하여

 

막대그래프를 그려보겠습니다.

 

저번 시간에 활용했던 수능 과학탐구 응시자 수에서

 

가장 최근인 2022년 데이터를 활용하겠습니다.

 

 

라이브러리 불러오기

import matplotlib.pyplot as plt

plt.rc('font', family = 'AppleGothic') # mac 
# plt.rc('font', family = 'Malgun Gothic') # window
plt.rc('font', size = 12)
plt.rc('axes', unicode_minus = False) # -표시 오류 잡아줌

 

 

수능 과학탐구 응시자 수 리스트

science = ['physics', 'chemistry', 'life', 'earth']
people = [6.8, 8.0, 14.7, 14.9] # 단위 : 만명

science에 물리, 화학, 생명과학, 지구과학을 넣어줬고

 

people에 응시자 수 를 넣어줬습니다.

 

 

막대그래프 그리기

plt.figure(figsize = (10, 5))
plt.bar(science, people)
plt.show()

plt.bar에 science와 people을 넣어줘서

 

그래프를 그렸습니다.

 

 

막대그래프 색깔 변경하기

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = 'green')
plt.show()

plt.bar의 color인자에 green을 넣으면

 

위와 같이 색깔이 초록색을 바뀐 것을 볼 수 있습니다.

 

이번에는 막대마다 색깔을 달리 해주겠습니다.

 

colors = ['red', 'blue','aqua', 'pink']

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = colors)
plt.show()

colors라는 리스트에 red, blue, aqua, pink를 넣었습니다.

 

그후 color = colors를 해주면 위와 같이 완성됩니다.

 

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = colors, alpha = 0.4)
plt.show()

위처럼 alpha에 0.4를 넣어주면 투명도가 설정됩니다.

 

 

막대그래프 축 조절

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = colors, alpha = 0.4)
plt.ylim(6, 15)
plt.show()

plt.ylim을 이용하여 y축의 범위를 6~15로 설정했습니다.

 

 

막대그래프 넓이 조절

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = colors, alpha = 0.4, width = 0.3)
plt.show()

plt.bar에 width인자를 활용하여 넓이를 조절했습니다.

 

이번에는 bar name을 회전시켜보겠습니다.

 

plt.figure(figsize = (10, 5))
plt.bar(science, people, color = colors, alpha = 0.4, width = 0.3)
plt.xticks(rotation = 45)
plt.show()

plt.xticks에 rotation = 45를 넣어서

 

45도를 기울여줬습니다.

 

위의 데이터는 상관이 없지만

 

bar의 개수가 많아지면 bar name이 겹쳐서

 

안 보이는 것을 해결하는데 도움이 됩니다.

 

 

수평 막대그래프 그리기

plt.figure(figsize = (10, 5))
plt.barh(science, people, color = colors, alpha = 0.4)
plt.show()

막대그래프를 수평으로 그리는 것은 간단합니다.

 

plt.bar에서 plt.barh로 바꿔주면 됩니다.

 

h는 horizontal의 약자입니다.

 

이제 한번에 투명도 설정과 bar name을 회전시켜보겠습니다.

 

plt.figure(figsize = (10, 5))
plt.barh(science, people, color = colors, alpha = 0.4)
plt.xlim(6, 15)
plt.yticks(rotation = 45)
plt.show()

이번에는 수평막대그래프이므로 xlim과 yticks를 사용해야 합니다.

 

이제 마지막으로 막대그래프에 값을 텍스트로 추가해보겠습니다.

 

 

막대그래프에 텍스트 추가

plt.figure(figsize = (10, 5))
bar1 = plt.bar(science, people, color = colors, alpha = 0.4)
plt.xticks(rotation = 45)
for i, j in enumerate(bar1) :
    plt.text(i, j.get_height(), people[i])
plt.show()

저번과 마찬가지로 enumerate함수를 사용했습니다.

 

이번에도 값이 똑바로 옆에 쓰여있죠.

 

텍스트를 조금 위와 가운데로 이동시키겠습니다.

 

plt.figure(figsize = (10, 5))
bar1 = plt.bar(science, people, color = colors, alpha = 0.4)
plt.xticks(rotation = 45)
plt.ylim(4, 16)
for i, j in enumerate(bar1) :
    plt.text(i, j.get_height() + 0.3, people[i], ha = 'center')
plt.show()

텍스트를 y축 방향으로 0.3만큼 올리고

 

ha인자를 활용하여 center에 위치시켰습니다.

 

마지막으로 텍스트를 bar색깔과 같은 색깔로 바꿔주겠습니다.

 

plt.figure(figsize = (10, 5))
bar1 = plt.bar(science, people, color = colors, alpha = 0.4)
plt.xticks(rotation = 45)
plt.ylim(4, 16)
for i, j in enumerate(bar1) :
    plt.text(i, j.get_height() + 0.3, people[i], ha = 'center', color = colors[i])
plt.show()

아까 bar색깔을 입힐 때 사용한 colors리스트를 이용하여

 

plt.text의 color인자에 colors를 넣어줬습니다.

 

하지만 이때는 colors에 인덱스를 넣어야 하는 것에 주의하시기 바랍니다.

 

다음에는 누적 막대그래프로 찾아뵙겠습니다!