# 히트맵 그리기
plt.pcolor(df, cmap='Blues')
plt.colorbar()
plt.pcolor(titanic_pivot)
plt.colorbar()
plt.xticks(np.arange(0.5,len(titanic_pivot.columns),1), labels=titanic_pivot.columns)
plt.yticks(np.arange(0.5,len(titanic_pivot.index),1), labels=titanic_pivot.index)
plt.show()
- heatmap(data=2차원데이터)
cmap=컬러맵 : 컬러맵 지정
annot=True : 수치 표시
fmt='d' : 정수로 표시
sns.heatmap(titanic_pivot, cmap='Blues', annot=True, fmt='d')
그래프 영역 채우기
# 그리드 스타일 : 라인스타일'--', 투명도0.3
plt.rcParams['grid.linestyle'] = '--'
plt.rcParams['grid.alpha'] = 0.3
# 폰트 사이즈 12
plt.rcParams['font.size']=12
가로방향으로 채우기
- plt.fill_between(x슬라이싱, y슬라이싱)
- 슬라이싱 범위가 같아야 한다.
x = [1,2,3,4]
y = [1,4,3,6]
plt.plot(x,y)
plt.fill_between(x[1:3], y[1:3], color='skyblue', alpha=0.5, hatch='/')
plt.show()
세로방향으로 채우기
- plt.fill_betweenx(y슬라이싱, x슬라이싱)
- 슬라이싱 범위가 같아야 한다.
x = [1,2,3,4]
y = [1,4,3,6]
plt.plot(x,y)
plt.fill_betweenx(y[:2], x[:2], alpha=0.3)
plt.show()
두 그래프 사이의 영역 채우기
- plt.fill_between(x슬라이싱, y1슬라이싱, y2슬라이싱)
x = [1,2,3,4]
y1 = [1,3,4,6]
y2 = [2,4,7,9]
plt.plot(x,y1)
plt.plot(x,y2)
plt.fill_between(x[1:3], y1[1:3], y2[1:3], color='darkorange')
plt.show()
다각형 채우기
- plt.fill([x축의 좌표들],[y축의 좌표들])
x = [1,2,3,4]
y = [1,4,3,6]
plt.plot(x,y)
plt.grid()
plt.fill([1.75, 2.25, 2.25, 1.75],[3.5, 3.5, 4.5, 4.5], alpha=0.1)
plt.fill([2.75, 3.25, 3.0],[2.5, 2.5, 3.5], color='pink')
plt.show()
수평선 그리기
- plt.axhline(y좌표, x축시작위치, x축끝위치)
수평선의 길이가 1이라고 했을 때 x축시작위치, x축끝위치를 지정한다.
따로 지정하지 않으면 x축 전범위에 걸쳐 그려진디ㅏ. - plt.hlines(y, x축시작좌표, x축끝좌표)
plt.plot([1,2,3,4], 'ko')
plt.axhline(2,0,1, color='b', alpha=0.5, ls=':')
plt.hlines(3, 0.0, 3.0, color='darkorange', ls='-.')
plt.show()
수직선 그리기
- axvline(x좌표, y축시작위치, y축끝위치)
수직선의 길이가 1이라고 했을 때 y축시작위치, y축끝위치를 지정한다.
따로 지정하지 않으면 y축 전범위에 걸쳐 그려진디ㅏ. - vlines(x, y축시작좌표, y축끝좌표)
plt.plot([1,2,3,4], 'ko')
plt.axvline(1, 0, 0.5, ls='--', color='r')
plt.vlines(2, 1.0, 3.0, ls=':', color='g')
plt.show()
텍스트 추가하기
- plt.text(x좌표, y좌표, 텍스트)
- rotation=회전각도
- ha : horizontal alignment
- va : vertical alignment
- 텍스트 상자
bbox = {'boxstyle':상자스타일, 'fc':facecolor,'ec':edgecolor,...}
boxstyle : 'round'/'square'
plt.plot([1,2,3,4], 'ko')
plt.text(2.1, 3, '(x:2, y:3)', ha='left', va='bottom', fontsize=12, rotation=45
, bbox={'boxstyle':'round', 'fc':'skyblue', 'ec':'b', 'alpha':0.3})
plt.axhline(3, ls=':', alpha=0.5, lw=0.5)
plt.axvline(2, ls=':', alpha=0.5, lw=0.5)
plt.plot(2,3,'ro')
plt.show()
화살표와 텍스트 추가하기
- plt.annotate('텍스트',xy=(화살표x,화살표y), xytext=(텍스트x,텍스트y), arrowprops=화살표속성(딕셔너리))
- 화살표 속성
width The width of the arrow in points
headwidth The width of the base of the arrow head in points
headlength The length of the arrow head in points
shrink Fraction of total length to shrink from both ends
plt.plot([1,2,3,4], 'ko')
plt.axhline(2, color='orange', lw=0.5, alpha=0.5, ls='--')
plt.axvline(1, color='orange', lw=0.5, alpha=0.5, ls='--')
plt.plot(1,2,'ro')
plt.annotate('(x:1,y:2)', xy=(1,2), xytext=(1.5,2.5)
, arrowprops={'width':1, 'headwidth':10, 'headlength':10, 'shrink':0.1, 'fc':'r'}
, fontsize=12, color='r')
plt.show()
두가지 정보를 하나의 그래프에 그리기
- 축을 분리하기 위해 객체지향으로 그린다.
- fig, ax = plt.subplots()
fig, ax = plt.subplots()
ax.bar(age, height, color='skyblue', width=0.5, ec='lightgray', label='height')
ax.plot(age, weight, color='darkred', marker='o', ls='-.', label='weight')
plt.legend()
plt.show()
2중 y축 만들기
- x축을 공유하는 새로운 axes객체를 만든다.
- axes객체.twinx()
fig, ax1 = plt.subplots()
ax1.bar(age, height, color='skyblue', width=0.5, ec='lightgray', label='height')
ax2 = ax1.twinx()
ax2.plot(age, weight, color='darkred', marker='o', ls='-.', label='weight')
plt.show()
축 레이블 표시하기
axes객체.set_xlabel(x레이블)
axes객체.set_ylabel(y레이블)
y축 범위 지정
- axes객체.set_ylim(y축눈금범위)
fig, ax1 = plt.subplots()
ax1.bar(age, height, color='skyblue', width=0.5, ec='lightgray', label='height')
ax2 = ax1.twinx()
ax2.plot(age, weight, color='darkred', marker='o', ls='-.', label='weight')
ax1.set_xlabel('나이')
ax1.set_ylabel('키(cm)')
ax2.set_ylabel('몸무게(kg)')
ax1.set_ylim(150,180)
ax2.set_ylim(60,90)
plt.show()
y축 눈금
- axes객체.set_yticks(y축눈금)
- axes객체.tick_params(...)
fig, ax1 = plt.subplots()
ax1.bar(age, height, color='skyblue', width=0.5, ec='lightgray', label='height')
ax2 = ax1.twinx()
ax2.plot(age, weight, color='darkred', marker='o', ls='-.', label='weight')
ax1.set_xlabel('나이')
ax1.set_ylabel('키(cm)')
ax2.set_ylabel('몸무게(kg)')
ax1.set_ylim(150,180)
ax2.set_ylim(60,90)
ax1.set_yticks(height)
ax2.set_yticks(weight)
ax1.tick_params(axis='y', colors='skyblue')
ax2.tick_params(axis='y', colors='darkred')
plt.show()
범례 표시
- axes객체별로 legend메소드 호출
그리드 표시
- axes객체.grid()
age = [13,14,15,16,17]
height = [160,165,170,173,177]
weight = [80,85,83,78,73]
fig, ax1 = plt.subplots()
ax1.bar(age, height, color='skyblue', width=0.5, ec='lightgray', label='height')
ax2 = ax1.twinx()
ax2.plot(age, weight, color='darkred', marker='o', ls='-.', label='weight')
ax1.set_xlabel('나이')
ax1.set_ylabel('키(cm)')
ax2.set_ylabel('몸무게(kg)')
ax1.set_ylim(150,180)
ax2.set_ylim(60,90)
ax1.set_yticks(height)
ax2.set_yticks(weight)
ax1.tick_params(axis='y', colors='skyblue')
ax2.tick_params(axis='y', colors='darkred')
ax1.legend()
ax2.legend()
ax1.grid(axis='y', ls='--', color='skyblue')
ax2.grid(axis='y', ls='--', color='pink')
plt.show()
728x90
반응형
'Programming > Python' 카테고리의 다른 글
데이터 전처리2 (Data Scaling) (0) | 2023.09.05 |
---|---|
데이터 전처리1 (null, outlier, bias, regression) (0) | 2023.09.05 |
[Matplotlib] 기본 (0) | 2023.09.04 |
[Pandas] pivot_table, groupby로 데이터 통계 다루기 (0) | 2023.08.30 |
[Pandas] row <-> col by melt, pivot and transpose (0) | 2023.08.30 |