Multivariate Data Visualization
ggplot2
에 내장되어 있는 데이터 “mpg”
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
# mpg 데이터head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr>
1 audi a4 1.8 1999 4 auto(l~ f 18 29 p
2 audi a4 1.8 1999 4 manual~ f 21 29 p
3 audi a4 2 2008 4 manual~ f 20 31 p
4 audi a4 2 2008 4 auto(a~ f 21 30 p
5 audi a4 2.8 1999 6 auto(l~ f 16 26 p
6 audi a4 2.8 1999 6 manual~ f 18 26 p
# ... with 1 more variable: class <chr>
plot()
을 이용하여 두
변수의 산점도를 작성할 수 있다.# iris 데이터## 함수 plot()plot(iris$Sepal.Length, # x축 iris$Sepal.Width, # y축 xlab = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 main = "iris 데이터의 2차원 산점도")# # 제목NA
Caution!
함수 plot()
의 댜양한 옵션을 통해
그래프를 수정할 수 있으며, 자세한 옵션은 여기를
참고한다.
# iris 데이터## 함수 plot()plot(iris$Sepal.Length, # x축 iris$Sepal.Width, # y축 xlab = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 main = "iris 데이터의 2차원 산점도" # # 제목NA= 3, # 점의 모양 cex = 3, # 점의 크기 col = "red") # 점의 색깔
# mpg 데이터##함수 plot()plot(mpg$displ, # x축 mpg$cty, # y축 xlab = "배기량"", # x축 라벨벨
ylab = "도시 연비"비", # y축 라벨라벨
main = "mpg 데이터의 2차원 산점도") # # 제목NA
# mpg 데이터## 함수 plot()plot(mpg$displ, # x축 mpg$cty, # y축 xlab = "배기량"", # x축 라벨벨
ylab = "도시 연비"비", # y축 라벨라벨
main = "mpg 데이터의 2차원 산점도" # # 제목NA= 5, # 점의 모양 cex = 3, # 점의 크기 col = "blue") # 점의 색깔
ggplot2
에 내장되어 있는 함수
geom_point()
를 통해 두 변수의 산점도를 작성할 수 있다.# iris 데이터## 함수 geom_point()ggplot(iris, aes(x = Sepal.Length, # x축 y = Sepal.Width)) + # y축 geom_point() +
labs(x = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 title = "iris 데이터의 2차원 산점도") # 제목NA
Caution!
Package ggplot2
의 댜양한 옵션을
통해 그래프를 수정할 수 있다.
# iris 데이터## 함수 geom_point()ggplot(iris, aes(x = Sepal.Length, # x축 y = Sepal.Width)) + # y축 geom_point(shape = 3, # 점의 모양 size = 3, # 점의 크기 color = "red") + # 점의 색깔 labs(x = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 title = "iris 데이터의 2차원 산점도") + # 제목NAtheme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
# mpg 데이터## 함수 geom_point()ggplot(mpg, aes(x = displ, # x축 y = cty)) + # y축 geom_point() +
labs(x = "배기량"", # x축 라벨벨
y = "도시 연비"비", # y축 라벨라벨
title = "mpg 데이터의 2차원 산점도") # # 제목NA
# mpg 데이터## 함수 geom_point()ggplot(mpg, aes(x = displ, # x축 y = cty)) + # y축 geom_point(shape = 5, # 점의 모양 size = 3, # 점의 크기 color = "blue") + # 점의 색깔 labs(x = "배기량"", # x축 라벨벨
y = "도시 연비"비", # y축 라벨라벨
title = "mpg 데이터의 2차원 산점도") + # 제목NAtheme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
matplot()
은 행렬 데이터의 열(변수)의 데이터 값들을
동시에 하나의 그래프에 나타낸다.matplot()
에 대한 자세한 옵션은 여기를
참고한다.scatterplot3d
에 내장되어 있는 함수
scatterplot3d()
를 통해 3차원 산점도를 작성할 수 있다.scatterplot3d()
에 대한 자세한 옵션은 여기를
참고한다.pacman::p_load("scatterplot3d")
# iris 데이터scatterplot3d(iris[,1:3],
pch = 3, # 점의 모양 color = "red", # 점의 색깔 main = "iris 데이터의 3차원 산점도"# # 제목NA= "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 zlab = "꽃잎의 길이" # z# z축 라벨NA)
# mpg 데이터scatterplot3d(x = mpg$displ, # x축 y = mpg$cty, # y축 z = mpg$hwy, # z축 pch = 5, # 점의 모양 color = "blue", # 점의 색깔 main = "mpg 데이터의 3차원 산점도" # # 제목NA= "배기량"", # x축 라벨벨
ylab = "도시 연비"비", # y축 라벨라벨
zlab = "고속도로 연비"비", # z축 라벨라벨
angle = 50, # 각도각도
box = FALSE, # 상자 그림을 나타낼 것인지 여부부
grid = FALSE # 격자를 나타낼 것인지 여부부
)
plot3D
에 내장되어 있는 함수
scatter3D()
를 통해 작성할 수 있다.scatter3D()
에 대한 자세한 옵션은 여기를
참고하며, 각 옵션에 대한 예제는 여기를
참고한다.pacman::p_load("plot3D")
# iris 데이터scatter3D(x = iris$Sepal.Length, # x축 y = iris$Sepal.Width, # y축 z = iris$Petal.Length, # z축 pch = 3, # 점의 모양 col = gg.col(100), # 색깔
main ="iris 데이터의 3차원 산점도" # # 제목NA= "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 zlab = "꽃잎의 길이" # z# z축 라벨NA= "f" # 박스 타입
)
# mpg 데이터scatter3D(x = mpg$displ, # x축 y = mpg$cty, # y축 z = mpg$hwy, # z축 pch = 5, # 점의 모양 colvar = NULL, col = "blue", # 오로지 한 색깔만 표시하고 싶을 때 옵션 colkey = FALSE, # 색깔 범례 표시 여부부
main = "mpg 데이터의 3차원 산점도" # # 제목NA= "배기량"", # x축 라벨벨
ylab = "도시 연비"비", # y축 라벨라벨
zlab = "고속도로 연비"비", # z축 라벨라벨
bty = "b2" # 박스 타입
)
plotly()
는 다양한
interactive 그래프
작성하는 데 유용한 Package이다.
interactive 그래프
란 그래프 위에 마우스 커서를
올리면 해당하는 부분의 정보를 보여주는 그래프이다.plotly()
의 함수 plot_ly()
를 통해
interactive 3차원 산점도를 작성할 수 있다.pacman::p_load("plotly")
# iris 데이터plot_ly(iris,
x = ~Sepal.Length, # x축 y = ~Sepal.Width, # y축 z = ~Petal.Length) %>% # z축 add_markers() %>%
layout(title = "iris 데이터의 3차원 산점도" # # 제목NA= list(xaxis = list(title = "꽃받침의 길이") # # x축 라벨NA= list(title = "꽃받침의 너비") ## y축 라벨 zaxis = list(title = "꽃잎의 길이"))) # z# z축 라벨NA
# mpg 데이터plot_ly(mpg,
x = ~displ, # x축 y = ~cty, # y축 z = ~hwy, # z축 mode = "markers",
marker = list(color = "green")) %>% # 색깔
add_markers() %>%
layout(title = "mpg 데이터의 3차원 산점도" # # 제목NA= list(xaxis = list(title = "배기량")), # x축 라벨벨
yaxis = list(title = "도시 연비")"), # y축 라벨라벨
zaxis = list(title = "고속도로 연비")))))# z축 라벨라벨
pairs()
을 사용할 수 있다.# iris 데이터## 함수 pairs()pairs(iris[,1:4],
main = "iris 데이터의 산점도 행렬")# # 제목NA
Caution!
함수 pairs()
의 댜양한 옵션을 통해
그래프를 수정할 수 있으며, 자세한 옵션은 여기를
참고한다.
# iris 데이터## 함수 pairs()pairs(iris[,1:4],
main = "iris 데이터의 산점도 행렬" # # 제목NA= 3, # 점의 모양 cex = 3, # 점의 크기 col = "red", # 점의 색깔 lower.panel = NULL) # 대각선 아래쪽 그래프 안보이게이게
GGally
에 내장된 함수
ggpairs()
를 통해 작성할 수도 있다.pacman::p_load("GGally")
# iris 데이터## 함수 ggpairs()ggpairs(iris[,1:4],
title = "iris 데이터의 산점도 행렬") +# # 제목NAtheme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
# mpg 데이터## 함수 ggpairs()ggpairs(mpg[,c("displ", "cty", "hwy")],
title = "mpg 데이터의 산점도 행렬") +# # 제목NAtheme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
stars()
를 통해
별도표를 작성할 수 있으며, 자세한 옵션은 여기를
참고한다.# iris 데이터stars(iris[,1:4],
full = TRUE, # 전체 원으로 표현할 것인지 반원으로 표현할 것인지 여부NA= TRUE, # 각 변수를 0과 1사이의 값으로 척도화할 것인지 여부부
radius = TRUE, # 반경 선을 표현할 것인지 여부NA= rownames(iris), # 라벨벨
draw.segments = FALSE, # 원으로 표현할 것이지 별 모양으로 표현할 것인지 여부NA= FALSE, # 라벨 위치 이동 여부여부
frame.plot = TRUE, # 외곽의 사각형틀을 나타낼 것인지 여부
main = "iris 데이터의 개체별 거리"", # 제목목
nrow = 10, # 행의 수NA= c(32, -2)) # 변수 이름을 표현하는 별도의 도표 좌표
# mpg 데이터stars(mpg[,c("displ", "cty", "hwy")],
full = FALSE, # 전체 원으로 표현할 것인지 반원으로 표현할 것인지 여부NA= TRUE, # 각 변수를 0과 1사이의 값으로 척도화할 것인지 여부부
radius = TRUE, # 반경 선을 표현할 것인지 여부NA= rownames(mpg), # 라벨벨
draw.segments = TRUE, # 원으로 표현할 것이지 별 모양으로 표현할 것인지 여부NA= FALSE, # 라벨 위치 이동 여부여부
frame.plot = TRUE, # 외곽의 사각형틀을 나타낼 것인지 여부
main = "mpg 데이터의 개체별 거리"", # 제목목
nrow = 14, # 행의 수NA= c(35, 1)) # 변수 이름을 표현하는 별도의 도표 좌표
plotrix
에 내장되어 있는 함수
radial.plot()
을 이용하여 작성할 수 있다.radial.plot()
에 대한 자세한 옵션은 여기를
참고한다.Caution!
각 개체별 레이더도표를 작성하기 위해 반복문
for()
를 이용할 수 있다.
# 개체별 레이더도표더도표
par(mfrow = c(2, 2))
for(i in 1:4){
radial.plot(iris[i,1:4],
rp.type = "rp", # 도표의 유형 radial.lim = c(0, 10), # 방사선의 범위
rad.col = "grey", # 방사선 색깔깔
line.col = "red", # 선 색깔깔
labels = names(iris)[1:4], # 각 변수에 대한 문자열 레이블이 저장되어 있는 벡터를 지정 show.grid = TRUE, # 원형 격자를 표현할 것인지 여부NA= TRUE, # 방사선을 표현할 것인지 여부NA= rownames(iris)[i] # 제목
)
}
stars()
는 옵션 locations = c(0, 0)
와
key.loc = c(0, 0)
을 지정하면 레이더도표를 작성한다.fmsb
에 내장되어 있는 함수
radarchart()
를 통해 레이더도표를 작성할 수 있다.
radarchart()
에서는 입력되는 데이터가 첫 번째 행은
각 변수의 최댓값, 두 번째 행은 최솟값이어야 한다.pacman::p_load("fmsb")
# iris 데이터radar.iris.data <- rbind(rep(10, 4), rep(0, 4), iris[,1:4])
radar.iris.data # 함수 radarchart()는 첫 행은 각 변수의 최댓값, 두 번째 행은 각 변수의 최솟값이어야 함NA
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 10.0 10.0 10.0 10.0
2 0.0 0.0 0.0 0.0
3 5.1 3.5 1.4 0.2
4 4.9 3.0 1.4 0.2
5 4.7 3.2 1.3 0.2
6 4.6 3.1 1.5 0.2
7 5.0 3.6 1.4 0.2
8 5.4 3.9 1.7 0.4
9 4.6 3.4 1.4 0.3
10 5.0 3.4 1.5 0.2
11 4.4 2.9 1.4 0.2
12 4.9 3.1 1.5 0.1
13 5.4 3.7 1.5 0.2
14 4.8 3.4 1.6 0.2
15 4.8 3.0 1.4 0.1
16 4.3 3.0 1.1 0.1
17 5.8 4.0 1.2 0.2
18 5.7 4.4 1.5 0.4
19 5.4 3.9 1.3 0.4
20 5.1 3.5 1.4 0.3
21 5.7 3.8 1.7 0.3
22 5.1 3.8 1.5 0.3
23 5.4 3.4 1.7 0.2
24 5.1 3.7 1.5 0.4
25 4.6 3.6 1.0 0.2
26 5.1 3.3 1.7 0.5
27 4.8 3.4 1.9 0.2
28 5.0 3.0 1.6 0.2
29 5.0 3.4 1.6 0.4
30 5.2 3.5 1.5 0.2
31 5.2 3.4 1.4 0.2
32 4.7 3.2 1.6 0.2
33 4.8 3.1 1.6 0.2
34 5.4 3.4 1.5 0.4
35 5.2 4.1 1.5 0.1
36 5.5 4.2 1.4 0.2
37 4.9 3.1 1.5 0.2
38 5.0 3.2 1.2 0.2
39 5.5 3.5 1.3 0.2
40 4.9 3.6 1.4 0.1
41 4.4 3.0 1.3 0.2
42 5.1 3.4 1.5 0.2
43 5.0 3.5 1.3 0.3
44 4.5 2.3 1.3 0.3
45 4.4 3.2 1.3 0.2
46 5.0 3.5 1.6 0.6
47 5.1 3.8 1.9 0.4
48 4.8 3.0 1.4 0.3
49 5.1 3.8 1.6 0.2
50 4.6 3.2 1.4 0.2
51 5.3 3.7 1.5 0.2
52 5.0 3.3 1.4 0.2
53 7.0 3.2 4.7 1.4
54 6.4 3.2 4.5 1.5
55 6.9 3.1 4.9 1.5
56 5.5 2.3 4.0 1.3
57 6.5 2.8 4.6 1.5
58 5.7 2.8 4.5 1.3
59 6.3 3.3 4.7 1.6
60 4.9 2.4 3.3 1.0
61 6.6 2.9 4.6 1.3
62 5.2 2.7 3.9 1.4
63 5.0 2.0 3.5 1.0
64 5.9 3.0 4.2 1.5
65 6.0 2.2 4.0 1.0
66 6.1 2.9 4.7 1.4
67 5.6 2.9 3.6 1.3
68 6.7 3.1 4.4 1.4
69 5.6 3.0 4.5 1.5
70 5.8 2.7 4.1 1.0
71 6.2 2.2 4.5 1.5
72 5.6 2.5 3.9 1.1
73 5.9 3.2 4.8 1.8
74 6.1 2.8 4.0 1.3
75 6.3 2.5 4.9 1.5
76 6.1 2.8 4.7 1.2
77 6.4 2.9 4.3 1.3
78 6.6 3.0 4.4 1.4
79 6.8 2.8 4.8 1.4
80 6.7 3.0 5.0 1.7
81 6.0 2.9 4.5 1.5
82 5.7 2.6 3.5 1.0
83 5.5 2.4 3.8 1.1
84 5.5 2.4 3.7 1.0
85 5.8 2.7 3.9 1.2
86 6.0 2.7 5.1 1.6
87 5.4 3.0 4.5 1.5
88 6.0 3.4 4.5 1.6
89 6.7 3.1 4.7 1.5
90 6.3 2.3 4.4 1.3
91 5.6 3.0 4.1 1.3
92 5.5 2.5 4.0 1.3
93 5.5 2.6 4.4 1.2
94 6.1 3.0 4.6 1.4
95 5.8 2.6 4.0 1.2
96 5.0 2.3 3.3 1.0
97 5.6 2.7 4.2 1.3
98 5.7 3.0 4.2 1.2
99 5.7 2.9 4.2 1.3
100 6.2 2.9 4.3 1.3
101 5.1 2.5 3.0 1.1
102 5.7 2.8 4.1 1.3
103 6.3 3.3 6.0 2.5
104 5.8 2.7 5.1 1.9
105 7.1 3.0 5.9 2.1
106 6.3 2.9 5.6 1.8
107 6.5 3.0 5.8 2.2
108 7.6 3.0 6.6 2.1
109 4.9 2.5 4.5 1.7
110 7.3 2.9 6.3 1.8
111 6.7 2.5 5.8 1.8
112 7.2 3.6 6.1 2.5
113 6.5 3.2 5.1 2.0
114 6.4 2.7 5.3 1.9
115 6.8 3.0 5.5 2.1
116 5.7 2.5 5.0 2.0
117 5.8 2.8 5.1 2.4
118 6.4 3.2 5.3 2.3
119 6.5 3.0 5.5 1.8
120 7.7 3.8 6.7 2.2
121 7.7 2.6 6.9 2.3
122 6.0 2.2 5.0 1.5
123 6.9 3.2 5.7 2.3
124 5.6 2.8 4.9 2.0
125 7.7 2.8 6.7 2.0
126 6.3 2.7 4.9 1.8
127 6.7 3.3 5.7 2.1
128 7.2 3.2 6.0 1.8
129 6.2 2.8 4.8 1.8
130 6.1 3.0 4.9 1.8
131 6.4 2.8 5.6 2.1
132 7.2 3.0 5.8 1.6
133 7.4 2.8 6.1 1.9
134 7.9 3.8 6.4 2.0
135 6.4 2.8 5.6 2.2
136 6.3 2.8 5.1 1.5
137 6.1 2.6 5.6 1.4
138 7.7 3.0 6.1 2.3
139 6.3 3.4 5.6 2.4
140 6.4 3.1 5.5 1.8
141 6.0 3.0 4.8 1.8
142 6.9 3.1 5.4 2.1
143 6.7 3.1 5.6 2.4
144 6.9 3.1 5.1 2.3
145 5.8 2.7 5.1 1.9
146 6.8 3.2 5.9 2.3
147 6.7 3.3 5.7 2.5
148 6.7 3.0 5.2 2.3
149 6.3 2.5 5.0 1.9
150 6.5 3.0 5.2 2.0
151 6.2 3.4 5.4 2.3
152 5.9 3.0 5.1 1.8
radarchart(radar.iris.data,
title = "iris 데이터의 레이더도표")
# mpg 데이터radar.mpg.data <- rbind(rep(50, 3), rep(0, 3), mpg[,c("displ", "cty", "hwy")]) # 함수 radarchart()는 첫 행은 각 변수의 최댓값, 두 번째 행은 각 변수의 최솟값이어야 함NAradar.mpg.data
# A tibble: 236 x 3
displ cty hwy
<dbl> <dbl> <dbl>
1 50 50 50
2 0 0 0
3 1.8 18 29
4 1.8 21 29
5 2 20 31
6 2 21 30
7 2.8 16 26
8 2.8 18 26
9 3.1 18 27
10 1.8 18 26
# ... with 226 more rows
radarchart(radar.mpg.data,
title = "mpg 데이터의 레이더도표")
원의 크기가 제 3의 변수값에 따라 다르다
는 것이
특징이다.symbols()
는 x, y
좌표에 여러 가지 모양을 나타낼 수 있으며, 모양의 크기를 비롯한 여러 가지
특징들은 옵션으로 조절 가능하다.symbols()
에 대한 자세한 옵션은 여기를
참고한다.# iris 데이터symbols(iris$Sepal.Length, # x축 iris$Sepal.Width, # y축 circles = iris$Petal.Length, # 원의 반지름 벡터 inches = 0.4, # 원의 크기 bg = "grey50", # 원의 배경색 fg = "black", # 원의 테투리색NA= "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 main = "iris 데이터의 꽃받침의 길이와 너비에 따른 꽃잎의 길이")NA# 제목NA
ggplot2
에 내장되어 있는 함수
geom_point()
를 통해 작성할 수 있다.
size
에 제3의 변수를 지정하면 산점도와 달리 원의
크기를 제3의 변수값으로 나타낼 수 있다.# iris 데이터ggplot(iris, aes(x = Sepal.Length, # x축 y = Sepal.Width, # y축 size = Petal.Length)) + # 크기
geom_point(color = "grey50", # 색깔
alpha = 0.5, # 색깔의 투명도 show.legend = FALSE) +
labs(x = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 title = "iris 데이터의 꽃받침의 길이와 너비에 따른 꽃잎의 길이") +NA# 제목NAtheme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
# mpg 데이터ggplot(mpg, aes(x = cty, # x축 y = hwy, # y축 size = displ, # 크기
color = displ)) + # 색깔
geom_point(show.legend = FALSE) +
scale_color_gradientn(colors = c("#00AFBB", # 수치가 작을 때 색깔
"#E7B800", # 중간 색깔
"#FC4E07")) + # 수치가 클 때 색깔색깔
labs(x = "도시 연비"비", # x축 라벨라벨
y = "고속도로 연비"비", # y축 라벨라벨
title = "mpg 데이터의 도시 연비와 고속도로 연비에 따른 배기량")배+량")# 제목 # 제목
theme_bw() + # 배경
theme(plot.title = element_text(hjust = 0.5, size = 15))
plotly()
는 다양한
interactive 그래프
작성하는 데 유용한 Package이다.
interactive 그래프
란 그래프 위에 마우스 커서를
올리면 해당하는 부분의 정보를 보여주는 그래프이다.plotly()
의 함수 plot_ly()
를 통해
interactive 버블차트를 작성할 수 있다.pacman::p_load("plotly")
# iris 데이터plot_ly(iris,
x = ~Sepal.Length, # x축 y = ~Sepal.Width, # y축 text = ~Petal.Length, # 글자 type = "scatter", # 산점도도
mode = "markers",
marker = list(size = ~Petal.Length, # 크기
opacity = 0.5, # 색깔 투명도
color = 'rgb(255, 65, 54)')) %>% # 색깔
layout(title = "iris 데이터의 꽃받침의 길이와 너비에 따른 꽃잎의 길이"NA#제목NA= list(title = "꽃받침의 길이") # # x축 라벨NA= list(title = "꽃받침의 너비")) ## y축 라벨
# mpg 데이터plot_ly(mpg,
x = ~cty, # x축 y = ~hwy, # y축 color = ~displ, # 색깔
hoverinfo = 'text',
text = ~paste('도시 연비 :':'ctyty'고속도로 연비 :'비 :', # 글자 글자
hwy, '<br>: 배기량'',displ)),
type = "scatter", # 산점도도
mode = "markers",
marker = list(size = ~displ, # 크기
opacity = 0.5)) %>% # 색깔 투명도
layout(title = "mpg 데이터의 도시 연비와 고속도로 연비에 따른 배기량" 배기량"# 제목 # 제목
xaxis = list(title = "도시 연비")"), # x축 라벨라벨
yaxis = list(title = "고속도로 연비")))) # y축 라벨라벨
MASS
에
내장되어 있는 함수 parcoord()
를 사용할 수 있다.pacman::p_load("MASS")
op <- palette(rainbow(nrow(mpg))) # 색깔
# iris 데이터parcoord(iris[,1:4],
col = op, # 색깔
var.label = TRUE) # 각 변수들의 선 끝에 최댓값과 최솟값 출력 출력
# mpg 데이터parcoord(mpg[,c("displ", "cty", "hwy")],
col = op, # 색깔
lty = 2, # 선 종류류
var.label = FALSE)
lattice
에
내장되어 있는 함수 parallelplot()
를 사용할 수 있다.pacman::p_load("lattice")
# iris 데이터parallelplot(iris[,1:4],
horizontal.axis = FALSE) # 평행 축을 수평으로 나열할 것인지 여부NA
# mpg 데이터parallelplot(mpg[,c("displ", "cty", "hwy")],
horizontal.axis = FALSE) # 평행 축을 수평으로 나열할 것인지 여부NA
GGally
에 내장되어 있는 함수
ggparcoord()
는 그룹에 따른 평행좌표 그래프를 나타내는 데
유용한 함수이다.pacman::p_load("GGally")
# iris 데이터ggparcoord(iris,
columns = 1:4, # 변수수
groupColumn = 5, # 그룹변수수
scale = "globalminmax", # 관측값 스케일링 X
showPoints = TRUE, # 점 표시
title = "iris 데이터의 붓꽃 종류에 따른 평행 좌표 그래프"# 제# 제목NA) +
scale_color_brewer(palette = "Set2") + # 색깔
theme_bw() + # 배경
theme(
plot.title = element_text(size=10, hjust = 0.5)
)
pacman::p_load("GGally",
"viridis", # For scale_color_viridis()
"hrbrthemes") # For theme_ipsum()
# mpg 데이터ggparcoord(mpg,
columns = c(3, 8, 9), # 변수수
groupColumn = "fl", # 그룹변수수
order = c(8, 9, 3), # 변수 나열하는 순서 순서
scale = "globalminmax", # 관측값 스케일링 X
showPoints = TRUE, # 점 표시
title = "mpg 데이터의 실린더 개수에 따른 평행 좌표 그래프" ## 제목 ) +
scale_color_viridis(discrete=TRUE) + # 색깔
theme_ipsum() + # 배경
theme(
plot.title = element_text(size=10, hjust = 0.5)
)
aplpack
에 내장되어 있는
함수 faces()
를 통해 작성할 수 있으며, 자세한 옵션은 여기를
참고한다.pacman::p_load("aplpack")
# iris 데이터faces(iris[,1:4], # 수치형 변수
face.type = 0, # 얼굴 스타일(0 : 선만 있는 얼굴 / 1: 색칠된 얼굴 / 2 : 산타클로스 얼굴)로스 얼굴)
nrow.plot = 3, # 행 개수
main = "iris 데이터의 체르노프 얼굴그림") # 제목
effect of variables:
modified item Var
"height of face " "Sepal.Length"
"width of face " "Sepal.Width"
"structure of face" "Petal.Length"
"height of mouth " "Petal.Width"
"width of mouth " "Sepal.Length"
"smiling " "Sepal.Width"
"height of eyes " "Petal.Length"
"width of eyes " "Petal.Width"
"height of hair " "Sepal.Length"
"width of hair " "Sepal.Width"
"style of hair " "Petal.Length"
"height of nose " "Petal.Width"
"width of nose " "Sepal.Length"
"width of ear " "Sepal.Width"
"height of ear " "Petal.Length"
# mpg 데이터faces(mpg[,c("cyl", "displ", "cty", "hwy")], # 수치형 변수
face.type = 2, # 얼굴 스타일(0 : 선만 있는 얼굴 / 1: 색칠된 얼굴 / 2 : 산타클로스 얼굴)로스 얼굴)
nrow.plot = 3, # 행 개수
labels = rownames(mpg), # 얼굴 그림의 라벨라벨
cex = 2, # 라벨 크기기
main = "mpg 데이터의 체르노프 얼굴 그림"
)
effect of variables:
modified item Var
"height of face " "cyl"
"width of face " "displ"
"structure of face" "cty"
"height of mouth " "hwy"
"width of mouth " "cyl"
"smiling " "displ"
"height of eyes " "cty"
"width of eyes " "hwy"
"height of hair " "cyl"
"width of hair " "displ"
"style of hair " "cty"
"height of nose " "hwy"
"width of nose " "cyl"
"width of ear " "displ"
"height of ear " "cty"
Caution!
함수 plot.face()
를 통해 체르노프
얼굴그림으로 산점도를 작성할 수 있다.
# iris 데이터## 체르노프 얼굴그림그림
iris.face <- faces(iris[1:10, 1:4],
plot = FALSE) # 그래프 출력 여부
effect of variables:
modified item Var
"height of face " "Sepal.Length"
"width of face " "Sepal.Width"
"structure of face" "Petal.Length"
"height of mouth " "Petal.Width"
"width of mouth " "Sepal.Length"
"smiling " "Sepal.Width"
"height of eyes " "Petal.Length"
"width of eyes " "Petal.Width"
"height of hair " "Sepal.Length"
"width of hair " "Sepal.Width"
"style of hair " "Petal.Length"
"height of nose " "Petal.Width"
"width of nose " "Sepal.Length"
"width of ear " "Sepal.Width"
"height of ear " "Petal.Length"
## 산점도도
plot(iris$Sepal.Length[1:10], # x축 iris$Sepal.Width[1:10], # y축 xlab = "꽃받침의 길이" # # x축 라벨NA= "꽃받침의 너비" ## y축 라벨 main = "iris 데이터의 산점도") ## 제목
## 그린 산점도와 저장한 체르노프 얼굴 그림 오버랩버랩
plot.faces(iris.face, # 얼굴 그림그림
iris$Sepal.Length[1:10], # x축 iris$Sepal.Width[1:10], # y축 face.type = 1, # 얼굴 스타일(0 : 선만 있는 얼굴 / 1: 색칠된 얼굴 / 2 : 산타클로스 얼굴) 스 얼굴)
width = 0.1, # 얼굴 넓이
height = 0.1) # 얼굴 높이
# mpg 데이터mpg.face <- faces(mpg[1:15,c("cyl", "displ", "cty", "hwy")],
plot = FALSE) # 그래프 출력 여부
effect of variables:
modified item Var
"height of face " "cyl"
"width of face " "displ"
"structure of face" "cty"
"height of mouth " "hwy"
"width of mouth " "cyl"
"smiling " "displ"
"height of eyes " "cty"
"width of eyes " "hwy"
"height of hair " "cyl"
"width of hair " "displ"
"style of hair " "cty"
"height of nose " "hwy"
"width of nose " "cyl"
"width of ear " "displ"
"height of ear " "cty"
# 산점도도
plot(mpg$displ[1:15], # x축 mpg$cty[1:15], # y축 xlab = "배기량"", # x축 라벨벨
ylab = "도시 연비"비", # y축 라벨라벨
main = "mpg 데이터의 산점도") ## 제목
## 그린 산점도와 저장한 체르노프 얼굴 그림 오버랩버랩
plot.faces(mpg.face, # 얼굴 그림그림
mpg$displ[1:15], # x축 mpg$cty[1:15], # y축 face.type = 2, # 얼굴 스타일(0 : 선만 있는 얼굴 / 1: 색칠된 얼굴 / 2 : 산타클로스 얼굴) 얼굴)
width = 0.2, # 얼굴 넓이
height = 0.3) # 얼굴 높이
mosaicplot()
를 통해 작성할 수 있다.table <- table(mpg$fl, mpg$class)
table
2seater compact midsize minivan pickup subcompact suv
c 0 0 0 0 0 1 0
d 0 1 0 0 0 2 2
e 0 0 0 1 3 0 4
p 5 21 15 0 0 3 8
r 0 25 26 10 30 29 48
op <- palette(rainbow(5))
mosaicplot(table, # 분할표 main = "mpg 데이터의 연료 종류에 따른 자동차 종류", # 제목
xlab = "연료 종류"", # x축 라벨벨
ylab = "자동차 종류" ## y축 라벨 color = c("orange", "yellow", "blue", "red", "green") # 색깔
)
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".