고급 시각화
[ 내용은 알까기2를 참조 하였습니다.]
# 고급 시각화
# ggplot2
install.packages(c("ggplot2","ggthemes"))
library("ggplot2")
library("ggthemes")
str(diamonds)
# Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 53940 obs. of 10 variables:
# $ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
# $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
# $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
# $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
# $ depth : num 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
# $ table : num 55 61 65 58 58 57 57 55 61 61 ...
# $ price : int 326 326 327 334 335 336 336 337 337 338 ...
# $ x : num 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
# $ y : num 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
# $ z : num 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
gg <- ggplot(data=diamonds, aes(x=carat,y=price,colour=clarity))
gg + geom_point() + theme_wsj() + theme(text = element_text(size=20))
# 3ro ggplot() geom_point() theme_wsj()fh rntjd
## ggplot()
# 데이터의 x축 y축 colour 등 그래프 요소를 매핑한다.
# 미적 요소 매핑 ( aesthethic mapping = aes)
ggplot(data=diamonds, aes(x=carat,y=price,colour=clarity)) # colour 에 명목현 변수를 입력한다.
## geom()
# ggplot에서 미적인 요소를 결정했으면 geom()으로 어떻게 그릴지를 결정한다.
# geom_point, line(), histogram() 이 존재한다. => 기하객체를 그리는 함수.
DF <- read.csv("data/example_studentlist.csv")
g1 <- ggplot(DF, aes(x=height,y=weight, colour=bloodtype))
g1 + geom_point() + theme(text = element_text(size=20))
g1 + geom_line() + theme(text = element_text(size=20))
g1 + geom_point() + geom_line() + theme(text = element_text(size=20))
g1 + geom_point(size=10) + geom_line(size=2) + theme(text = element_text(size=20))
# 미적요소를 geom_line 이전에 ggplot에서 만들어 주어서 정의 하지 않았지만
# 해당 요소(aes)를 geom_line과 같은 부분에서도 적용 할 수 있다.
g1 + geom_line(aes(colour=sex), size = 1) + geom_point(size=10)
#명목함수를 기준으로 그래프를 나누어 그릴 수도 있다.
g1 + geom_point(size=10) + geom_line(size=1) + facet_grid(.~sex)
## Bar Graph
# table()을 사용하지 않더라도 barplot을 그려준다.
ggplot(DF, aes(x=bloodtype)) + geom_bar()
#명목변수를 활용하여 fill을 할 수 있다.
ggplot(DF, aes(x=bloodtype,fill=sex)) + geom_bar()
#성별로 각각 막대로 나타내고 싶으면
ggplot(DF, aes(x=bloodtype,fill=sex)) + geom_bar(position = "dodge")
#levels 별로 더하지 않고 겹쳐서 그린다.
ggplot(DF, aes(x=bloodtype,fill=sex)) + geom_bar(position = "identity")
#누적그래프
ggplot(DF, aes(x=bloodtype,fill=sex)) + geom_bar(position = "fill")
#너비 조절
ggplot(DF, aes(x=bloodtype,fill=sex)) + geom_bar(position = "dodge", width = 0.3)
## 히스토그램
g1 <- ggplot(diamonds, aes(x=carat)) # y를 지정하지 않으면 자동으로 도수가 된다.
g1 + geom_histogram(binwidth = 0.1, fill="orange")
# ..count.. : 예약어
# ..density 밀도
# ..ncount.. : 표준화된 도수값
g1 + geom_histogram(aes(y=..count..),binwidth = 0.1, fill="orange")
# 히스토그램 그룹별로 그리기.
g1 + geom_histogram(aes(y=..count..),binwidth = 0.1, fill="orange") + facet_grid(color~.)
g1 + geom_histogram(aes(y=..count..),binwidth = 0.1, fill="orange") + facet_grid(.~color)
#y 축의 값 크기를 각 그래프에 맞도록 변경.
g1 + geom_histogram(aes(y=..count..),binwidth = 0.1, fill="orange") + facet_grid(color~.,scales="free")
#18
#레벨별로 겹쳐보여 비교 하는 방법
g1 + geom_histogram(aes(fill=color), binwidth = 0.1, alpha=0.5) + theme(text = element_text(size=20)) # binwidth : 두께 alpha : 투명도.
## 산점도 그리기
DF <- read.csv("data/example_studentlist.csv")
g1 <- ggplot(DF, aes(x=weight,y=height))
g1 + geom_point() + theme(text = element_text(size=20))
g1 + geom_point(aes(colour=sex), size=7) + theme(text = element_text(size=20))
g1 + geom_point(aes(colour=sex,shape=sex), size=7) + theme(text = element_text(size=20))
g1 + geom_point(aes(colour=sex,shape=bloodtype), size=7) + theme(text = element_text(size=20))
#colour에는 명목변수 뿐만 아니라 연속 변수도 입력할 수 있다.
g1 + geom_point(aes(shape=sex,size=height), colour="orange") + theme(text = element_text(size=20))
#aes안에는 변수 즉, 데이터안에 있는 names가 들어가야되고 나머지 상수 값이 들어가려면 aes() 이외에 입력.
g1 + geom_point(aes(shape=bloodtype,colour=sex),size=7 ,alpha = 0.6) + theme(text = element_text(size=20))
## 산점도와 회귀분석
# 산점도와 회귀분석은 밀접한 관계가 있다.
# 회귀선 : 두 변수의 관계를 함수식으로 나타낸 선
g1 + geom_point(aes(colour=sex),size=7) + geom_smooth(method = "lm") + theme(text = element_text(size=20))
g1 + geom_point(aes(colour=sex),size=7) + geom_text(aes(label=name),vjust=1.1,colour="grey35") + theme(text = element_text(size=20))
## theme()
# 배경컬러, x축 컬러, 모양과 컬러 등 엄청나게 많은 디자인 요소를 결정 할 수 있다.
# 27
g1 + geom_point(aes(colour=sex),size=7) + geom_text(aes(label=name),vjust=1.1,colour="grey35") + theme(text = element_text(size=20)) + theme_wsj()
'BIGDATA > R' 카테고리의 다른 글
[DataMining] 2. 시각화를 통한 탐색적 데이터 분석(EDA) (0) | 2017.09.16 |
---|---|
[DataMining] 1. R Basic Programming (0) | 2017.09.09 |
#11. 기초 시각화 [ R 내장 함수 ] (0) | 2016.07.12 |
#10 .기술통계 [ 예제 ] (0) | 2016.07.12 |
#09. 기술통계 (0) | 2016.07.10 |