> matplotlib 가져오기
import matplotlib.pyplot as plt
>plot
x=[1,2,3]
y=[2,4,8]
plt.plot(x,y) #라인 출력 안하려면 plt.show()
>title 설정 : plt.title('그래프 제목')
> 축 설정(xlabel / ylabel)
plt.xlabel('X축', color='red', loc='right')#left, center, right
plt.ylabel('Y축', color='#00aa00', loc= 'top') # top, center, bottom
>축 표시값 설정 (xticks / yticks)
plt.xticks([1,2,3]) #x축의 범위를 1, 2, 3순으로 표시
plt.yticks([3,6,9,12]) #y축의 범위를 3,6,9,12순으로 표시
plt.show()
> 범례(plt.legend)
plt.legend(loc ='upper right') #loc : 위치설정 -> upper right, lower right
plt.legend(loc =(0.5,0.5))
>스타일
선의 두께 : linewidth
선 스타일 : linestlye (ls)
색깔 : color
투명도 : alpha
마커 : marker
마커사이즈 : markersize(ms)
마커테두리색깔 : markeredgecolor (mec)
마커 안의 색깔 : markerfacecolor (mfc)
>포맷
#포맷 순서 : 색깔 -> 마커 -> 라인스타일
ex1) plt.plot(x,y,'ro--') #color, marker, linestlye
ex2) plt.plot(x,y,'bv:') #color, marker, linestlye
>그래프 크기 : plt.figure(figsize=(a,b))
>그래프 해상도 : dpi
>배경색 : facecolor
> 파일저장
: plt.savefig('파일 이름' , dpi= 해상도 설정)
>텍스트
#label 만들기
>여러 데이터 표현
#coivd-19 백신 종류별 접종 인구
dbdays=[1,2,3] #10월 1일 2일 3일
az =[2,4,8]
pfizer =[5,1,3]
moderna =[1,2,5]
plt.plot(days, az, label='az')
plt.plot(days, pfizer, label='pfizer', marker ='o')
plt.plot(days, moderna, label='moderna', marker='s')
plt.legend(ncol =3) # ncol : 열의 개수만큼 범례 표시
>막대 그래프
labels=['kang', 'seo', 'jeong'] #이름
values =[190, 187, 184] #키
colors=['r','g','b'] #color 리스트 만들기
plt.ylim(175,195) #y축의 데이터 제한
plt.bar(labels, values, color=colors, alpha=0.5)
#rotation : 이름 데이터 각도 설정
# width : 바의 두께
ex)
plt.bar(labels, values, width=0.3) #width : 바의 두께
plt.xticks(rotation=45) # x축의 이름 데이터 각도를 45도로 설정
plt.yticks(rotation= 45) #y축의 키 데이터 각도를 45도로 설정
#옆으로 누운 그래프 : barh
plt.barh(labels, values)
plt.xlim(175,195) # xlim의 범위 수정
#패턴 넣기 : set_hatch()
>dataframe
# index와 label에 들어갈 열 값을 넣어주면 됨
plt.plot(df['지원번호'], df['영어'])
plt.plot(df['지원번호'], df['수학'])
plt.grid(axis ='y', color ='purple', alpha=0.2) #그리드 그리기 axis :축 값, color , alpha
ex)
>누적 막대 그래프 : bottom 옵션으로 밑에 깔기
plt.bar(df['이름'], df['국어'], label="국어")
plt.bar(df['이름'], df['영어'], bottom =df['국어'], label="영어") #밑에 놓고 그 데이터를 쌓음
plt.bar(df['이름'], df['영어'], bottom =df['국어']+df['영어'], label="수학") #밑에 놓고 그 데이터를 쌓
plt.xticks(rotation=60)
plt.legend()
=> 밑에 순서대로 국어, 영어, 수학 누적막대 그래프
> 다중그래프
#x값의 위치 조정을 통해 다양한 데이터를 한 그래프에 표현
index= np.arange(N) // array([0, 1, 2, 3, 4, 5, 6, 7])
w=0.25
plt.bar(index-w, df['국어'], width=w)
plt.bar(index, df['영어'] ,width=w)
plt.bar(index+w, df['수학'] ,width=w)
plt.xticks(index, df['이름'], rotation =60)
> 원 그래프
- 원그래프 그리기 : plt.pie (values, labels)
- 옵션
# 퍼센트 설정 : autopct = "%. 1f %%" -> 소수점 한자리까지 표현
# 시작 앵글 : startangle
# 방향 : counterclock
# 띄우기 : explode
# 원의 두께 : wedgeprops {width : edgecolor(파트들의 테두리 선 두께)}
ex1)
values=[30,25,20,13,10,2]
label1= ['Python', 'Java','JavaScript','C#', 'C/C++', 'ETC']
plt.pie(values, labels=label1, autopct='%.1f%%', startangle=90, counterclock=False, explode=explode))
plt.show()
ex2)
wedgeprops {'width':0.8, 'edgecolor' :'w'}
plt.pie(values, labels=label1, autopct = "%.1f%%", startangle=90, counterclock=False, explode=explode , wedgeprops =wedgeprops)
>산점도(scatter)
plt.scatter(df['영어'], df['수학'])
plt.xlabel('english score')
plt.ylabel('math score')
'데이터 분석 > 파이썬' 카테고리의 다른 글
[Python] 7570. 줄세우기(골3) / 그리디 (0) | 2024.02.06 |
---|---|
[파이썬 실무 테크닉 100] ch3. 고객의 전체 모습을 파악하는 테크닉 10 (0) | 2023.10.29 |
[나도코딩] 데이터 분석 및 시각화 - Pandas 요약 (0) | 2023.04.12 |
5-4) 범주형 변수 분석 (0) | 2023.03.29 |
5-3) 수치형 데이터 변수의 요약과 기술통계 (0) | 2023.03.29 |