- matplotlib: 파이썬에서 데이터를 효과적으로 시각화하기 위해 만든 라이브러리
import matplotlib.pyplot as plt # matplotlib의 서브모듈 불러오기
- matplotlib에서 2차원 선 그래프를 그리는 형식
plt.plot(x,y,fmt)
# x, y : 각각 x축과 y축 좌표의 값을 의미
# fmt : format string, 다양한 형식으로 그래프를 그릴 수 있는 옵션
* subplot()
plt.subplot(m, n, p)
# m * n 행렬로 이뤄진 하위 그래프 중에서 p번 위치에 그래프가 그려지도록 지정 가능
* 예시
# plt.plot(data1) 책에는 이렇게 나와있는데, 잘못된 것이고 아래(객체지향 방식)처럼 해야한다.
fig, ax = plt.subplots() # 시작할 땐 이렇게 하기! 도면과 축을 생성하는 것
ax.plot(data1)
plt.show()
# output:
dates = [
'2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05',
'2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10'
]
min_temperature = [20.7, 17.9, 18.8, 14.6, 15.8, 15.8, 15.8, 17.4, 21.8, 20.0]
max_temperature = [34.7, 28.9, 31.8, 25.6, 28.8, 21.8, 22.8, 28.4, 30.8, 32.0]
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10,3)) # 가로 10, 세로 3 그림에 1*1 행렬의 그래프 생성
ax.plot(dates, min_temperature, label = "2021")
ax.plot(dates, max_temperature, label = "2024")
ax.legend(loc = 'upper right') # 오른쪽 위에 범례 만들기
plt.show() # x축 y축 수정하려면 seaborn or matplotlib? -> matplotlib
# output :
- 막대 그래프
* 형식
plt.bar(x, height, with=width_f, color=colors, tick_label=tick_labels, align='center'(기본) 혹은 'edge', label=labels])
# x : height와 길이가 일치하는 데이터(x축에 표시될 위치 지정),
# 일반적으로 순서만 지정하므로 0부터 시작해서 height의 길이만큼 1씩 증가하는 값을 가짐
# width : [0,1] 사이의 실수를 지정해 막대의 폭을 조절(입력하지 않으면 기본값 0.8)
# color : fmt 옵션의 컬러 지정 약어를 이용해 막대 그래프의 색을 지정할 수 있음
# tick_label : 문자열 혹은 문자열 리스트를 입력해 막대 그래프 각각의 이름 지정(미지정 시 기본 숫자)
# align : 막대 그래프의 위치를 가운데(center)로 할지, 치우치게(edge) 할지 설정(기본:center)
* 예시 1)
import calendar # 날짜와 관련된 메서드
print(calendar.month_name[1:13])
month_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sold_list = [300, 400, 550, 900, 600, 960, 900, 910, 800, 700, 550, 450]
# bar()
# x = month_list, y = sold_list
fig, ax = plt.subplots() # 시작할 땐 이렇게 하기! 도면과 축을 생성하는 것
ax.bar(month_list, sold_list)
ax.set_xticks(month_list, calendar.month_name[1:13], rotation=90) # set_xticks(): x축 이름 생성, rotation=90 :x축 레이블을 90도로 회전
plt.show()
# output:
* 예시2)
import calendar
month_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sold_list = [300, 400, 550, 900, 600, 960, 900, 910, 800, 700, 550, 450]
fig, ax = plt.subplots()
barcharts = ax.bar(month_list, sold_list) # 바 차트 생성
ax.set_xticks(month_list, calendar.month_name[1:13], rotation=90)
print(barcharts)
for rect in barcharts: #각 막대 위에 값 표시
# print(rect) #확인 용도(artists)
# print(type(rect)) # class 확인 용도
height= rect.get_height() # 각 막대의 높이를 가져옴
ax.text(rect.get_x() + rect.get_width()/2., 1.002*height,'%d' % int(height), ha='center', va='bottom')
# ax.text() : 텍스트를 플로팅하는 역할, rect.get_x() + rect.get_width()/2.: x축 중심좌표 계산, 1.002*height,'%d' % int(height) : y축 높이(height)보다 1.002 만큼 높게 각 막대의 높이를 정수로 표현, ha = 'center', va='bottom' : 텍스트를 가로 정렬(ha), 세로 정렬(va)
# print(height) 확인 용도
plt.show()
# output:
class 'matplotlib.patches.Rectangle 관련 링크: https://matplotlib.org/stable/api/_as_gen/matplotlib.patches.Rectangle.html
'Python' 카테고리의 다른 글
[pandas] 엑셀 파일 불러오기, 내보내기 (1) | 2024.01.08 |
---|---|
[pandas] 데이터 통합하기 (0) | 2024.01.08 |
[pandas] 데이터 불러오기 (0) | 2024.01.06 |
pandas 간단 정리 (1) | 2024.01.06 |
Numpy 배열 생성 정리 (0) | 2024.01.06 |