인터랙티브 그래프
브라우저로 볼 수 있는 움직이는 그래프
인터랙티브 그래프 그리기
# 11장 인터랙티브 그래프 : 브라우저로 볼 수 있는 그래프
install.packages("plotly")
library(plotly)
mpg <- ggplot2::mpg
p<- ggplot(data=mpg, aes(x=displ, y=hwy, col=drv)) +geom_point()
# plot(p)
ggplotly(p)
이렇게 브라우저로 그래프를 볼 수 있다.
다이아몬드 그래프 그리기
# plot(p)
ggplotly(p)
diamonds
p <- ggplot(data=diamonds, aes(x=cut, fill=clarity)) + geom_bar()
ggplotly(p)
바로 그리지 않고 p에 넣고 그리는 이유?
- ggplotly에 안넣고 바로 그리면, 브라우저가 안생긴다 !
p <- ggplot(data=diamonds, aes(x=cut, fill=clarity)) + geom_bar(position="dodge")
ggplotly(p)
position = "dodge" 를 추가하면 지정한 fill의 종류별로 그래프가 나눠져서 나온다!
산포도
데이터의 분산 상태를 나타내는 그래프
산포도 그리기
# 산포도(ScatterPlot)
# 정수로 숫자 나오게 하기
options(scipen=999)
# midwest 데이터 불러오기
midwest<-ggplot2::midwest
#테마 바꾸기 - 배경색
theme_set( theme_gray())
gg <- ggplot(midwest, aes(x=area, y=poptotal)) +
geom_point(aes(col=state, size=popdensity)) +
geom_smooth(method="loess", se=F) +
xlim(0, 0.1) +
ylim(0, 500000) +
labs( subtitle="지역 대 인구",
y="인구",
x="지역",
title='산포도(ScatterPlot)',
caption='Source:midwest')
ggplotly( gg )
ggplot2에 들어있는 midwest자료를 이용해 산포도를 그렸다.
지역에 인구수가 어떻게 분포해있는지 눈으로 확인할 수 있다.
mpg 제조사 빈도수 차트 만들기
# 제조사 목록 가져오기
freqtable <- table(mpg$manufacturer)
freqtable
# 제조사 목록 데이터프레임으로 바꾸기
df <- as.data.frame.table(freqtable )
df
g <- ggplot(df, aes(x= Var1)) +
geom_bar(width=0.5, fill="magenta") +
labs(title = "Bar Chart", subtitle="제조사") +
theme(axis.text.x=element_text(angle=65, vjust=0.6))
ggplotly(g)
6일차 수업 : https://peach-hzz.tistory.com/16
6일차 수업을 떠올려보면 빈도수를 나타내는 그래프를 만들 때,
geom_bar()를 사용하고 y축을 지정하지 않으면 된다.
하지만 그렇게 했더니 빈도수가 모두 같은 그래프가 나와버렸다...
빈도수 그래프에서 y축 지정하기
g <- ggplot(df, aes(Var1, Freq)) +
geom_bar(stat="identity", width=0.5, fill="magenta") +
labs(title = "Bar Chart", subtitle="제조사") +
theme(axis.text.x=element_text(angle=65, vjust=0.6))
ggplotly(g)
원하던대로 그래프가 나온 모습 !
geom_bar()에서 y축을 지정하고 싶을 때?
geom_bar(stat = "identity")를 써주고 y값을 지정해주면 된다!!
-> 막대 높이가 값이 지정한 y열의 값이 된다
참고한 블로그 : https://blog.naver.com/hiddenjgrace/222783751916
penguins 자료 활용하기
pen<-palmerpenguins::penguins
head(pen)
펭귄은 내가 좋아하는 자료다 ! (내가 펭귄을 좋아하기 때문)
pen에 펭귄자료를 가져온다
qplot으로 간단한 산점도 그리기
gg <- qplot(bill_length_mm, body_mass_g,
data=pen, color=species)
ggplotly(gg)
펭귄의 몸 크기와 부리 길이에 대한 산포도
qplot은 ggplot에 비해 간단한 그래프를 그릴 수 있다.
data, x, y, color 값만 넣고 산점도를 그려보았다.
ggplot으로 산점도 그리기
gg <- ggplot(data=pen, aes(x=bill_length_mm, y=body_mass_g,
col=species)) +
geom_point()
ggplotly(gg)
같은 값을 넣고 그려 qplot과 ggplot의 결과가 똑같이 나왔다.
하지만 더 세세한 설정을 넣고 싶을 때 ggplot을 사용하면 된다 !
세계 지도 그리기
library(maps)
map('world')
이렇게 세계 지도를 가져올 수 있다.
par(mfrow=c(1,2))
map('usa')
map('state')
map에 나라를 지정하면, 그나라의 지도가 나온다.
state를 지정하면, 그 나라의 지역이 나눠진다.
par(mfrow=c(2,2))
map(region='canada')
map(region='japan')
map(region='south korea')
map(region='north korea')
이렇게 다양한 나라의 지도를 볼 수 있다 !
(왜이렇게 작게나오는지는 모르겠음)
캐나다 인구 분포도 그리기
head(canada.cities)
캐나다의 지역별 인구수와 지역의 위치를 알 수 있다.
이걸 활용해서 인구 분포도를 그려보자
gg <- ggplot(canada.cities, aes(long, lat)) +
borders(regions="canada") +
coord_equal() +
geom_point(aes(text=name, size=pop,
colour='red', alpha=0.2))
ggplotly(gg)
* geom_point(alpha = 점의 투명도)
캐나다는 사람들이 아래쪽에 몰려사는 것 같다
mpg자료 활용하기
class와 hwy boxplot 그리기
g<-ggplot(mpg, aes(class, hwy)) + geom_boxplot(notch=T)
plot(g)
ggplotly(g)
비교적 간단하게 나오는 plot과 달리, ggplotly는 boxplot의 값까지 그래프로 알 수 있다.
g<-ggplot(mpg, aes(class, hwy)) +
geom_boxplot(notch=T, fill="blue")
ggplotly(g)
geom_box(fill= "색") : boxplot을 채울 색을 지정 할 수 있다 !
대륙별 인구 그래프 그리기
install.packages("gapminder")
remotes::install_github("thomasp85/gganimate@v0.1.1")
library(gapminder) #대륙별 인구
library(gganimate)
library(dplyr)
head(gapminder::gapminder)
gapminder 자료를 사용했다.
대륙 별 인구와 년도별 기대수명을 알 수 있다.
대륙별 기대수명 분포도 그리기
# 가장 최근년도 가져오기
df1 <- gapminder %>% filter( year == max(year))
df1
# 그래프 그리기
g<-ggplot(df1, aes(x=gdpPercap, y=lifeExp,
color=continent)) +
geom_point()
ggplotly(g)
확실히 아프리카 쪽의 기대수명이 낮은 것을 확인할 수 있다.
년도별 기대수명 분포도
g <- ggplot(gapminder, aes(gdpPercap, lifeExp, size=pop, frame=year)) +
geom_point() +
geom_smooth(aes(group=year), method="lm", show.legend=F) +
facet_wrap(~continent, scale="free")
ggplotly(g)
face_wrap( ) : 하나의 데이터에서 그룹별로 쪼개서 그래프를 그릴 때 사용.
참고 블로그 : https://blog.naver.com/regenesis90/222203859357
여태 R하면서 한거중에 이게 제일 신기했다
play 누르면 년도별로 그래프가 샤라라라락 지나간다 !!
ggplot의 한계는 어디인가..
시계열 인터랙티브 그래프 그리기
economics 시계열 그래프 그리기
# 필요한 라이브러리 설치
install.packages("dygraphs")
library(dygraphs)
library(xts)
# economics 데이터 가져오기
economics <- ggplot2::economics
head(economics)
str(economics)
eco <- xts(economics$unemploy, order.by=economics$date)
head(eco)
시계열 그래프를 그리기 위해 xts로 데이터에서 날짜순으로 unemploy를 정렬해온다.
dygraph(eco) %>% dyRangeSelector()
시계열에 따라 데이터 값을 확인할 수 있다 !
아래 막대를 움직여 원하는 시기의 데이터를 확인 가능하다
저축율, 실업율 그래프 그리기
# 저축율 가져오기
eco_a <- xts(economics$psavert, order.by=economics$date)
# 실업율 가져오기
eco_b <-xts(economics$unemploy/1000, order.by=economics$date
# 두 데이터 합치기
eco2 <- cbind(eco_a, eco_b)
# 열 이름 바꾸기
colnames(eco2)<-c("저축율", "실업율")
head(eco2, 20)
# 그래프 그리기
dygraph(eco2) %>% dyRangeSelector()
그래프가 잘나왔다 !
시계열 그래프 참고 블로그 : https://blog.naver.com/regenesis90/222238348059
~ 오늘의 공부 후기 ~
인터랙티브 그래프가 그냥 그래프가 뭐가 다른지 몰랐는데 !
play 버튼을 누르거나, 아래 바를 움직이면서 유동적으로 움직이는 그래프를 보니 신기했다.
유용하게 사용할 수 있을 것 같다.
그리고 ggplot은 정~~말 다양한 명령어가 있는거 같다.
미리 공부해두면 그래프를 그릴때 아주 유용하게 사용할 수 있을 것 같다 !
※ 사용한 교재 : 쉽게 배우는 R 데이터 분석 / 저자 : 김영우
'R > 강의복습' 카테고리의 다른 글
[22.08.23] 11일차 데이터크롤링 ( 영화 평점 가져오기 ) (0) | 2022.09.03 |
---|---|
[22.08.22] 10일차 (데이터 크롤링 / 뉴스 크롤링 ) (0) | 2022.09.03 |
[22.08.19] 9일차 지도시각화 (0) | 2022.08.21 |
[22.08.18] 8일차 (날짜 / 시간 관련 데이터) (0) | 2022.08.21 |
[22.08.18] 8일차(wordclou2/정규식/문자열/gsub/grep/substring) (0) | 2022.08.21 |