ggplot2 는 그래프를 만들 때 가장 많이 사용하는 패키지이다.
시각화 패키지 1순위
그래프를 그릴떄 기본적으로 배경의 틀을 만들고
그 위에 점, 선, 막대같은 그래프를 추가
또 그 위에 축 범위, cex 표시같은 설정을 추가
install.packages("ggplot2")
library(ggplot2)
그래프 기본 틀 만들기
ggplot(데이터 세트, aes(데이터 속성))
mpg 데이터로 그래프를 그려보자
x축은 dispal, y축은 hwy로 지정해 기본 틀 설정
ggplot(mpg, aes(x = dispal, y = hwy))
aes(x축에 들어갈 데이터, y축에 들어갈 데이터)
산점도 만들기
geom_point : 산점도 그래프
배경에 산점도 추가
+ 를 이용해 계속 함수 추가
엔터로 밑으로 내릴거면 연산자 쓰고 내려야함
ggplot(mpg, aes(x = displ, y = hwy)) + geom_point()
xlim, ylim 범위 지정
x축 범위 3~6 으로 지정
ggplot(mpg, aes(x = dispal, y = hwy)) + geom_point() + xlim(3,6)
x축 범위 3~6 으로 지정 , y축 범위 10 ~ 30 으로 지정
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() + xlim(3, 6) + ylim(10, 30)
airquality 데이터로 그래프를 그려보자
airquality 데이터에서 날짜별 온도를 시각화해보자
x축은 날짜 (Day), y축은 온도(Temp))
str(airquality)
153개의 행과 6개의 열을 가진 데이터
ggplot(airquality, aes(x = Day, y = Temp))
산점도 만들기
ggplot(airquality, aes(x = Day, y = Temp)) + geon_point()
크기를 3, 색상을 빨강으로 적용하여 산점도 만들기
ggplot(airquality, aes(x = Day, y = Temp)) + geom_point(size = 3, color = "red")
산점도 차트에 텍스트 추가하기
ggplot(airquality, aes(x = Day, y = Temp)) + geom_point() +
geom_text(aes(label = Temp, vjust = 0, hjust = 0))
라벨 = 라벨명
vjust = 0 글자의 세로에서의 위치
hjust = 0 글자의 가로에서의 위치
가로값과 세로값을 0으로 입력하면 label은 각 점의 오른쪽 위에 나오게 됨
막대 그래프 - 집단 간 차이 표현하기
install.packages("dplyr")
library(dplyr)
집단별 평균표 만들기
df_mpg <- mpg %>% group_by(drv) %>% summarise(mean_hwy = mean(hwy))
df_mpg
summarise() 함수는 dplyr 패키지에서 제공되는 함수로 데이터에 대한 '요약 통계량' 을 계산하는데 사용됩니다.
주로 group_by 함수와 함께 사용하여 데이터의 그룹별 요약 통계량을 계산하는데 활용됩니다.
위의 코드에서 summarise() 함수는 drv(구동방식별) 열을 기준으로 데이터를 그룹화한 후
각 그룹에서 hwy(고속도로 연비)의 평균을 계산하고
새로운 열을 갖는 데이터 프레임이 생성됩니다.
= 통계량 (평균, 합계, 중앙값 등) 을 계산하고 데이터를 요약하는 작업
막대 그래프 생성하기
geom_col : 막대그래프 만들기
ggplot(df_mpg, aes(x = drv, y = mean_hwy)) + geom_col()
크기 순으로 정렬하기
ggplot(df_mpg, aes(x = reorder(drv, -mean_hwy), y = mean_hwy)) + geom_col()
reorder(해당 변수, 정렬 기준) : 크기 순으로 정렬하기
x축의 변수가 drv이긴한데, 막대기의 길이로 조정할거니까 mean_hwy (정렬 기준)도 써줌
-mean_hwy : 앞에 - (마이너스) 가 붙으면 점점 빼짐, 내림차순
앞에 마이너스가 없으면 오름차
빈도 막대 그래프 만들기
geom_bar()
값의 개수를 막대 길이로 표현한 것
y축없이 x축만 지정해주면 됨 (빈도가 들어간 것이므로 y축은 필요없음 - count로 나옴)
ggplot(mpg, aes(x = drv)) + geom_bar()
ggplot(mpg, aes(x = hwy)) + geom_bar
mtcars 데이터에서 실린더별 빈도수를 빈도 막대 그래프 만들기
ggplot(mtcars, aes(x = cyl)) + geom_bar()
ggplot(mtcars, aes(x = vyl)) + geom_bar(width = 0.5)
width : 굵기 조절
만약 차트를 그릴 때
값이 없는 데이터는 빼고 그리려면, 지금 데이터는 숫자 데이터이기 떄문에
이거를 문자형 factor 로 지정하면, 문자로 바뀌어서 실제 데이터에 있는 값만 그릴 수 있다.
ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(width = 0.5)
gear에 따른 빈도 막대 그래프를 그리고 그래프의 제목, 축 제목 입력해보기
labs : 제목 추가하기
ggplot(mtcars, aes(x = cyl)) + geom_bar() +
labs(x = "기어수", y = "자동차 수", title = "변속기 기어별 자동차수")
테마 설정해보기
theme_bw() : 뒤에 배경, 테마 변경
ggplot(mtcars, aes(x = cyl)) + geom_bar() +
labs(x = "기어수", y = "자동차 수", title = "변속기 기어별 자동차 수") +
theme_bw()
종류 : theme_gray(), theme_linedraw
누적 막대 그래프 만들기
geom_bar(aes(fill=factor(gear)
실린더 종류별 gear 빈도까지 파악해보자
ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(aes(fill = factor(gear)))
채워질 내용은 gear이다.
이 막대기 안에서 기어에 대한 데이터가 색깔로 누적되어 표시
누적 막대 그래프를 선버스트 차트로 변환하기
(뭔가 원형 버섯같이 생김)
coord_polar()
여러 열로 구성된 범주를 계층 구조로 쌓고 싶을 때
선버스트 차트를 이용해서 데이터를 효과적으로 표현
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(aes(fill = factor(gear)) +
coord_polar()
선버스트 차트를 다시 원형으로 변환
coord_polar(theta="y")
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(aes(fill = factor(gear))) +
coord_polar(theta = "y")
선 그래프
시계열 그래프 만들기
시간에 따라 달라진 데이터를 표현할 때 적합한 데이터
economics : 미국의 경제지표를 월별로 나타낸 데이터
geom_line() : 꺾은 선 그래프
ggplot(economics, aes(x = date, y = unemploy)) + geom_line()
ggplot(airquality, aes(x = Day, y = Temp)) + geom_line()
ggplot(airquality, aes(x = Day, y = Temp)) +
geom_line(color = "red") + geom_point(size = 3, color = "green")
상자 그림 - 집단 간 분포 차이 표현하기
데이터의 분포 설명 (ex - 이상치)
drv : 구동방식
hwy : 고속도로 연비
상자 그림 만들기
ggplot(mpg, aes(x = drv, y = hwy)) + geom_boxplot()
ggplot(mpg, aes(x = cyl, y = hwy)) + geom_boxplot()
숫자 데이터는 뭉쳐서 나오는데 그룹으로 묶으면
떨어진 그래프로 나옴
ggplot(airquality, aes(x = Day, y = Temp, group = Day)) +
geom_boxplot()
히스토그램 그리기
x축의 데이터가 연속성을 가진 데이터
ggplot(airquality, aes(Temp)) + geom_histogram()
'데이터 분석' 카테고리의 다른 글
11 - 코테 (1) | 2024.01.03 |
---|---|
한국 복지 패널 데이터분석 (0) | 2023.06.11 |
R 데이터 분석 - 데이터 시각화 (0) | 2023.06.08 |
R 데이터 분석 실습 - mtcars 데이터, mpg 데이터, ggplot2 패키지 (0) | 2023.05.29 |
R 데이터 분석 - 데이터 가공 (2) (0) | 2023.05.28 |