- 서울시 CCTV 현황 분석 데이터 읽기
- [번외1] Pandas 기초 - series, dataframe
- CCTV 데이터와 인구현황 데이터 훑어보기
- 데이터 합치기 - merge
- [번외2] matplotlib 기초 <- here
- CCTV 데이터 그래프로 표현하기
- 데이터 경향을 그려보자
- 경향에서 벗어난 데이터 강조하기
시각화를 위해 그래프 그리는 연습을 하였다.
한글 폰트를 쓸 것이므로 맑은고딕으로 설정해주고,
%matplotlib inline <- 주피터 노트북 안에서 그래프를 그리면 바로 나타나도록 하는 설정이다.
import matplotlib.pyplot as plt
from matplotlib import rc
rc("font", family="Malgu Gothinc")
%matplotlib inline
matplotlib 에서 pyplot이라는 시각화 기능을 가져와 plt로 사용한다.
figure, plot, show 이 세가지가 그래프를 그리는 데에 가장 기본적인 형태이다.
figure의 figsize <- 도화지 크기를 설정하는 느낌으로 가로/세로 지정 가능
plot <- x축 / y축에 어떤 데이터가 들어갈지 예시로 넣어주었다.
plt.figure(figsize=(10, 6))
plt.plot([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 2, 3, 4, 2, 3, 5, -1, 3])
plt.show()
삼각함수 그리기:
numpy를 사용하였다.
np.arange(a, b, s) <- a부터 b까지 s의 간격
그래프 안에 정보들을 추가해서 보는 사람들이 더 쉽게 하자!
plt.figure(figsize=(10,6))
plt.plot(t, np.sin(t), label="sin")
plt.plot(t, np.cos(t), label="cos")
plt.grid()
plt.title("Example of sinewave")
plt.xlabel("time")
plt.ylabel("Amplitude")
plt.legend()
plt.show()
t = np.arange(0, 5, 0.5)
t
-> array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
이 데이터를 가지고 그래프의 모양을 지정해보자:
plot에서 옵션으로 추가하면 된다.
r-- <- red dotted line
bs <- blue square
g^ <- green arrow^
plt.figure(figsize=(10, 6))
plt.plot(t, t, "r--")
plt.plot(t, t ** 2, "bs")
plt.plot(t, t ** 3, "g^")
다른 데이터인디
여러가지 설정 추가해주기 연습:
linestile<- 점선으로 변경
marker <- 이응 모양 (???이거 뭐라고함)
markerfacecolor <- 그거 색깔
markersize <- 그거 사이즈
xlim , ylim <- 범위 지정
plt.figure(figsize=(6, 4))
plt.plot(
t, y,
color="green",
linestyle="dashed",
marker="o",
markerfacecolor="blue",
markersize=15
)
plt.xlim([-0.5, 6.3])
plt.ylim([0.5, 9.5])
plt.show()
t = np.array(range(0, 10))
y = np.array([9, 8, 7, 9, 8, 3, 2, 4, 3, 4])
plot대신 scatter만 사용하면 된다.
def drawGraph():
plt.figure(figsize=(20, 6))
plt.scatter(t, y)
plt.show()
drawGraph()
커스텀을 해보자:
colormap을 이용하여 다양한 표현이 가능하다~
colormap = t
def drawGraph():
plt.figure(figsize=(20, 6))
plt.scatter(t, y, s=100, c=colormap, marker=">") # s는 marker의 size
plt.colorbar()
plt.show()
drawGraph()
★ https://matplotlib.org/stable/gallery/index
^^^ matplotlib의 examples -> gallery에서, 다양한 그래프 자료들과 코드들이 제공된다.
그리고 싶은 그래프를 찾아 사용법을 익히고,
원하는 그래프에 맞게 커스텀하면 된다.
다시 프로젝트로 돌아가서,
새롭게 모듈을 임포트해줬는데
나는 폰트가 계속 깨지는 것이다 위에서는 잘 됐는데.
구글링하여 폰트매니저 를 추가하였다.
앞으로 복사하여 쓸 것이다.
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
소계 컬럼 시각화
코드 뒤에 붙는 세미콜론은 그래프 그릴 시에 나오는 구구절절 코드들을 삭제해준다.
+ pandas에서 plot을 바로 쓸 수 있다.
+ kind="barh" <- horizontal bar chart
data_result["소계"].plot(kind="barh", grid=True, figsize=(10, 10));
★ 정렬 중요하다. <<<정보를 한 눈에 보기 위해
data_result["소계"].sort_values().plot(
kind="barh", grid=True, title="가장 CCTV가 많은 구", figsize=(10, 10));
따라서 가장 CCTV가 많은 구/ 적은 구를 한 눈에 알 수 있다.
.
.
.
시각화가 젤 재밌엉