지금까지 데이터를 가져왔습니다.
근데 이제 숫자로만 데이터를 분석하거나 판단하면, 아 생각만해도 머리와 눈이 아파오네요..
그래서 저희는 데이터를 그래프로 만들어 데이터를 시각화 할 것입니다.
데이터 시각화
- 그래프, 차트, 다이어그램 등 다양한 시각화 도구를 사용하여 데이터를 시각적으로 표현한 것
- 데이터 시각화는 복잡한 데이터 집합을 직관적이고 이해하기 쉬운 형태로 변환하여 데이터의 패턴, 추세, 상관 관계 등을 파악하는데 유리함
목적
- 데이터의 패턴과 추세 파악 : 시각화를 통해 데이터의 패턴, 추세, 이상치 등을 식별하고 분석
- 데이터 간 관계 이해 : 다양한 변수 간의 관계와 상관 관계를 시각적으로 이해
- 인사이트 도출 : 시각화를 통해 데이터에서 의미 있는 인사이트와 통찰력을 도출
그럼 이렇게 데이터를 시각화 하려면 어떻게 해야 할까요?
매트랩을 사용해보신 분들은 익숙한 이름처럼 들린 것입니다. Matplotlib이라는 모듈을 사용합니다.
Matplotlib
- 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리
- 그래프, 차트, 플롯 등 다양한 시각화 요소를 생성하고 데이터를 시각적으로 나타낼 수 있습니다.
Matplotlib — Visualization with Python
seaborn Cartopy DNA Features Viewer plotnine WCS Axes seaborn seaborn is a high level interface for drawing statistical graphics with Matplotlib. It aims to make visualization a central part of exploring and understanding complex datasets. statistical data
matplotlib.org
간단한 1차 그래프를 그려봅시다.
실습 (그래프 그리기)
- pip install matplotlib 로 모듈을 설치해 줍니다.
- import matplotlib.pyplot as plt (pyplot : 맷플롯립의 기능을 간편하게 사용할 수 있는 함수제공)
- plt.plot(x 좌표, y 좌표,[옵션 매개변수]) : 그래프그리기
- plt.show() : 그래프 표시
- x = [1,2,3,4,5] , y = [1,2,3,4,5]
이런식으로 가져온 데이터를 시각화하는 것입니다.
근데 이제 범례 표시와 x축, y축 타이틀 그래프 타이틀을 설정하여야 하는데 이때 쓰는 메서드는
- plt.title("타이틀 명")
- plt.label : 범례 표시 명 , plt.legend() 함수 필수
- plt.legend()
- loc : 위치(예 : loc = "upper center")
- title : 범례명
- frameon : 박스표시 여부
- fontsize : 범례 텍스트 크기
어라 뭔가 이상하죠 한글이 깨집니다.
이 이유는 VS코드에는 한글 폰트가 없기 때문입니다.
그러니 저희는 한글 폰트를 불러와야만 사용할 수 있습니다.
다음과 같은 순서로 한글을 설정할 수 있습니다.
- from matplotlib import font_manager
- font_list = font_manager.findSystemFonts(fontpaths = None, fontext = 'ttf')
- print(font_list) 에서 마음에 드는 폰트의 경로를 찾습니다.
- path = "주소.ttf"
- font = font_manager.FontProperties(fname = path).get_name()
- plt.rc('font', famliy = font)
다음과 같이 설정한 후 다시 출력해 봅시다.
자 이제 한글 폰트가 제대로 나오는 것을 확인 가능합니다.
하지만 만약에 그래프에 특정 포인트나 선의 두께를 더키우고 싶죠? 그럼 그래프를 좀 꾸며 봅시다.
- color : 그래프 색상 (예: color = "red" or "r")
- linestyle : '-', '- -' 등 선 스타일
Linestyles — Matplotlib 3.9.3 documentation
Linestyles Simple linestyles can be defined using the strings "solid", "dotted", "dashed" or "dashdot". More refined control can be achieved by providing a dash tuple (offset, (on_off_seq)). For example, (0, (3, 10, 1, 15)) means (3pt line, 10pt space, 1pt
matplotlib.org
- linewidth : 선 두께 (예: linewidth = 2)
- marker : 마커생성 (예: 'o', 's', '*')
matplotlib.markers — Matplotlib 3.9.3 documentation
matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: Note that special symbols can be defined via the STIX math font, e.g. "$\u266B$". For an overview over t
matplotlib.org
- makersize : 마커크기 변경
- markerfacecolor : 마커 내부 색상 변경
- markeredgecolor : 마커 외곽선 색상 변경
- pad : 타이틀과에 간격을 지정할 수 있습니다.
- fontdict : 폰트 꾸미기
- fontsize : 폰트 크기
- labelpad : x축 y축 label에 간격을 정할 수 있다.
- grid(True, axis, [옵션]) : 격자 생성
이제 보면 그래프가 그려질때 축이 애매하게 끊길때가 있습니다. 또는 기준치를 초과하는지 알고 싶을때 한계를 정하는 방법이 있습니다.
축 범위 설정
- xlim([xmin, xmax]) : x축 범위 설정
- ylim([ymin, ymax]) : y축 범위 설정
- axis("equal") : x축과 축을 동일하게 유지
- axis("scaled") : 데이터의 비율에 따라 축 스케일 설정
- axis("tight") : 데이터가 그래프의 모든영역을 채우도록 설정
- axis("auto") : 자동을 축설정
이제 우리는 그래프 여러개 표시하는 법을 학습해 봅시다!!
솔직히 하나의 그래프가지고는 비교할 수있는 데이터는 한계가 너무 분명함으로, 여러개의 그래프를 동시에 비교해볼수 있어야 겠죠?
그래프 여러개 표시
- subplot(nrows, ncols, index)
- nrows : 전체 플롯이 배치될 행(row)개수
- ncols : 전체 플롯이 배치될 열(column)개수
- index : 플롯이 배치될 위치 (왼쪽에서 오른쪽, 위에서 아래로 번호 매김)
- tight_layout() : 간격 조정
- suptitle() : 전체 그래프의 제목
subplot 사용 전후
오늘은 여기까지 선그래프를 시각화 하는 방법을 배웠습니다.
이제 마무리 실습과 함께 포스팅을 마치겠습니다.
실습(그래프 그리기)
- month = ['Jan','Feb','Mar','Apr','May','Jun','Jly','Aug','Sep','Oct','Nov','Dec']
- sales_2019 = [100, 120, 140, 110, 130, 150, 160, 170,180,200, 190, 210]
- sales_2020 = [90,110,130,120,140,150,170,160,150,180,200,190]
- 위 그래프를 자신이 원하는대로 꾸며서 표현해주세요.
다음 시간에는 막대그래프와 히스토그램 도넛그래프등등 공부합시다.
오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

'python 시작하기' 카테고리의 다른 글
python seaborn을 이용한 데이터 시각화 (0) | 2024.12.18 |
---|---|
Python 데이터 시각화 (2) (1) | 2024.12.17 |
python Pandas (2) | 2024.12.15 |
Python Numpy (4) | 2024.12.14 |
Python 웹 자동화 (1) | 2024.12.12 |