Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- NumPy
- Join
- Selenium
- 백준
- 알고리즘
- aws jupyter notebook
- 알고리즘 스터디
- pandas
- 데이터시각화
- Matplotlib
- 프로그래머스
- 자료구조
- python
- 선그래프
- type hint
- MySQL
- 정보처리기사 c언어
- 노마드코딩
- javascript
- Stack
- 알고리즘스터디
- dataframe
- programmers
- String Method
- 가상환경
- Algorithm
- queue
- 파이썬
- openCV
- 코딩테스트
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Matplotlib] 그래프 주석 달기 & 마커 지정 본문
주석 달기 : annotate() 함수
- 주석 내용(텍스트)을 넣을 위치와 정렬방법 등을 함수에 함께 전달
- S는 '', 화살표의 머리부분은 xy, 꼬리부분은 xytext, 화살표 서식은 arrowprops = dict() 사용
- arrowprops 옵션 사용시 텍스트 대신 화살표 표시를 나타냄
- 화살표 서식은 arrowprops=dict() 함수 내에 arrowstyle(->), color(skyblue), lw(5) 속성 지정
plt.annotate('',xy=(21,650000), xytext=(2, 300000),
arrowprops=dict(arrowstyle='->', color='skyblue', lw=5))
plt.annotate('',xy=(43,450000), xytext=(28,680000),
arrowprops=dict(arrowstyle='->', color='olive', lw=5))
먼저 화살표를 그리는 예제를 살펴보자.
텍스트는 쓰지 않을 거라서 빈 문자열로 설정을 한다. 그리고 화살표의 머리와 꼬리 부분의 위치를 지정해준다. xy=()가 머리 부분 좌표가 되고, xytext=()가 꼬리부분 좌표가 된다. 그리고 세부적인 화살표 속성을 딕셔너리에 넣어 꾸며준다.
aroowprops=dict() 안에 화살표스타일, 화살표 색, 그리고 화살표 굴기(lw)를 지정해 넣을 수 있다.
plt.annotate('인구 이동 증가(1970-1996)', xy = (11, 440000), rotation = 20,
va='baseline', ha='center', fontproperties=mg_15)
plt.annotate('인구 이동 감소(1995-2017)', xy = (36, 540000), rotation = -16,
va='baseline', ha='center', fontproperties=mg_15)
텍스트를 주석으로 달 때는 조금 다르게 사용된다. 먼저 텍스를 문자열 형태로 넣은 후, 넣을 위치를 xy=()로 지정한다. 이때의 좌표는 텍스트의 가운데 위치를 의미한다. rotation은 주석을 회전시킬 때 쓰는 속성으로, 몇 도인지 숫자를 적는다.
va 는 텍스트 상하정렬, ha는 텍스트 좌우정렬을 나타낸다.
이 주석들을 그래프에 적용시킨 결과는 아래와 같다.
from matplotlib.patches import ArrowStyle # ArrowStyle 임포트
plt.figure(figsize=(14,5)) #가로 사이즈 늘리기
plt.plot(sr_one.index, sr_one.values) #플롯 만들기
plt.title('서울 -> 경기 인구 이동', fontproperties=mg_30) #제목 지정, 폰트사이즈 설정
plt.xlabel('기간', fontproperties=mg, size='20') #x축 지정
plt.xticks(rotation=70) #축 70도 회전
plt.ylabel('이동 인구수', fontproperties=mg,size='20') #y축 지정
plt.legend(['서울->경기'],loc='best', prop=mg_20) # 범례 넣기
plt.ylim(50000, 800000) # 주석 넣을 여백을 위해 y축 범위 늘리기 ylimit(최소값, 최대값)
plt.annotate('',xy=(21,650000), xytext=(2, 300000), arrowprops=dict(arrowstyle='->', color='skyblue', lw=5))
plt.annotate('',xy=(43,450000), xytext=(28,680000), arrowprops=dict(arrowstyle='->', color='olive', lw=5))
plt.annotate('인구 이동 증가(1970-1996)', xy = (11, 440000), rotation = 20, va='baseline', ha='center', fontproperties=mg_15)
plt.annotate('인구 이동 감소(1995-2017)', xy = (36, 540000), rotation = -16, va='baseline', ha='center', fontproperties=mg_15)
plt.show()
Marker 지정
마커란 그래프에서 데이터 위치를 표시해 주는 걸 말한다.
- marker='o' : 마커 지정( 온점(.), 별(*) 등 가능 )
- markersize='10' : 마커 사이즈 지정
- mkargerfacecolor='red' : 마커 색상 지정
마커는 플롯을 만들 때 속성값으로 넣어준다.
plt.plot(sr_one.index, sr_one.values,
marker='o', markersize='10', markerfacecolor='red')
이런 식으로 'o' 모양의 크기 10인 빨간색 마커를 만들 수 있다.
실제 그래프에 활용해 보면,
from matplotlib.patches import ArrowStyle
plt.figure(figsize=(14,5)) #가로 사이즈 늘리기
plt.style.use('seaborn-colorblind') #스타일 서식 지정
plt.plot(sr_one.index, sr_one.values,
marker='o', markersize='10', markerfacecolor='red') #플롯 만들기, 마커지정
plt.title('서울 -> 경기 인구 이동', fontproperties=mg_30) #제목 지정, 폰트사이즈 설정
plt.xlabel('기간', fontproperties=mg, size='20') #x축 지정
plt.xticks(rotation=70) #축 70도 회전
plt.ylabel('이동 인구수', fontproperties=mg,size='20') #y축 지정
plt.ylim(50000, 800000) # 주석 넣을 여백을 위해 y축 범위 늘리기 ylimit(최소값, 최대값)
plt.legend(['서울->경기'],loc='best', prop=mg_20) # 범례 넣기
plt.show()
이렇게 동그란 마커가 잘 생성된 것을 볼 수 있다.
'Python > 데이터 시각화' 카테고리의 다른 글
[Matplotlib] 다양한 그래프 그리기(면적그래프, 막대그래프, 보조축 활용) (0) | 2022.10.01 |
---|---|
[Matplotlib] 그래프 여러개 그리기(화면 분할/그래프 분할) (0) | 2022.10.01 |
[Matplotlib] 그래프 스타일 지정 (그래프 디자인 변경) (0) | 2022.09.30 |
[Matplotlib] Google Colab 한글 깨짐 (최후의 해결책) (0) | 2022.09.29 |
[Matplotlib/Pandas] 선 그래프 그리기 (+데이터 불러오기 및 처리하기) (0) | 2022.09.29 |