1. ์ด์‚ฐํ˜• ๋ณ€์ˆ˜ ์‹œ๊ฐํ™” 
: ์ •์ˆ˜ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๋ณ€์ˆ˜(์ž๋…€์ˆ˜, ํŒ๋งค์ˆ˜, ์ž๋™์ฐจ์ˆ˜)

 


์ฐจํŠธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

chart_data <- c(305,450, 320, 460, 330, 480, 380, 520) 
names(chart_data) <- c("2016 1๋ถ„๊ธฐ","2017 1๋ถ„๊ธฐ","2016 2๋ถ„๊ธฐ","2017 2๋ถ„๊ธฐ","2016 3๋ถ„๊ธฐ","2017 3๋ถ„๊ธฐ","2016 4๋ถ„๊ธฐ","2017 4๋ถ„๊ธฐ")
str(chart_data)
chart_data

* Named num [1:8] : 1์ฐจ์›์˜ ์ˆซ์žํ˜•
* attr(*, "names")= chr [1:8] : ์›์†Œ์˜ ์ด๋ฆ„ ์ •๋ณด

chart_data
range(chart_data) #305, 520
length(chart_data) #8

labels = names(chart_data)
labels #๋ฐ์ดํ„ฐ ์ด๋ฆ„๋งŒ ์ถ”์ถœ



1) ๋ง‰๋Œ€์ฐจํŠธ
์„ธ๋กœ๋ง‰๋Œ€์ฐจํŠธ

barplot(chart_data, ylim=c(0, 600), col=rainbow(8), #ylim : y์ถ• ๋ˆˆ๊ธˆ ๊ฐ’
        ylab='๋งค์ถœ์•ก(๋‹จ์œ„:์ฒœ์›)', xlab='๋…„๋„๋ณ„ ๋ถ„๊ธฐํ˜„ํ™ฉ',
        main='2016vs2017๋…„ ๋ถ„๊ธฐ๋ณ„ ๋งค์ถœํ˜„ํ™ฉ')


๊ฐ€๋กœ๋ง‰๋Œ€์ฐจํŠธ : horiz = TRUE ์†์„ฑ ์ถ”๊ฐ€

barplot(chart_data, xlim=c(0, 600), horiz=TRUE, col=rainbow(8),
        ylab='๋…„๋„๋ณ„ ๋ถ„๊ธฐํ˜„ํ™ฉ', xlab='๋งค์ถœ์•ก(๋‹จ์œ„:์ฒœ์›)',
        main='2016vs2017๋…„ ๋ถ„๊ธฐ๋ณ„ ๋งค์ถœํ˜„ํ™ฉ')


๋ฒ”๋ก€ ์ถ”๊ฐ€

barplot(chart_data, ylim=c(0, 700), col=rainbow(8), #ylim : y์ถ• ๋ˆˆ๊ธˆ ๊ฐ’
        ylab='๋งค์ถœ์•ก(๋‹จ์œ„:์ฒœ์›)', xlab='๋…„๋„๋ณ„ ๋ถ„๊ธฐํ˜„ํ™ฉ',
        main='2016vs2017๋…„ ๋ถ„๊ธฐ๋ณ„ ๋งค์ถœํ˜„ํ™ฉ',
        legend.text=names(chart_data), #๋ฒ”๋ก€ํ…์ŠคํŠธ
        args.legend=list(x='topleft'),#๋ฒ”๋ก€ ์œ„์น˜
        )


์ฐจํŠธ ๊ฐ’์— text ์ถ”๊ฐ€
: ์ฐจํŠธ๋„ ๋ณ€์ˆ˜ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

bp = barplot(chart_data, ylim=c(0, 600), col=rainbow(8), #ylim : y์ถ• ๋ˆˆ๊ธˆ ๊ฐ’
        ylab='๋งค์ถœ์•ก(๋‹จ์œ„:์ฒœ์›)', xlab='๋…„๋„๋ณ„ ๋ถ„๊ธฐํ˜„ํ™ฉ',
        main='2016vs2017๋…„ ๋ถ„๊ธฐ๋ณ„ ๋งค์ถœํ˜„ํ™ฉ')


text ๋ฐ˜์˜

text(x=bp, y=chart_data+20,
     labels=chart_data, cex=0.7) #x,y์ถ•์˜ ์ขŒํ‘œ ์„ค์ •


1ํ–‰ 2์—ด ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ

par(mfrow=c(1,2))
VADeaths #์‹œ๊ณจvs๋„์‹œ ์ถœ์‹  ์‚ฌ๋ง ๋น„์œจ ์ž๋ฃŒ
str(VADeaths) #num[1:5, 1:4] : 2์ฐจ์› ์ˆซ์žํ˜•(๋งคํŠธ๋ฆญ์Šค ๊ตฌ์กฐ)
#..$ : chr [1:5] "50-54" "55-59"... ํ–‰์˜ ์ด๋ฆ„
#..$ : chr [1:4] "Rural Male" "Rural Female"... ์—ด์˜ ์ด๋ฆ„


์™ผ์ชฝ : ๊ฐœ๋ณ„๋ง‰๋Œ€

barplot(VADeaths, beside=T,
        col=rainbow(5),
        main="๋ฒ„์ง€๋‹ˆ์•„์ฃผ ํ•˜์œ„๊ณ„์ธต ์‚ฌ๋ง๋น„์œจ")


์˜ค๋ฅธ์ชฝ : ๋ˆ„์ ํ˜• ๋ง‰๋Œ€์ฐจํŠธ

barplot(VADeaths, beside=F,
        col=rainbow(5),
        main="๋ฒ„์ง€๋‹ˆ์•„์ฃผ ํ•˜์œ„๊ณ„์ธต ์‚ฌ๋ง๋น„์œจ")


1ํ–‰ 1์—ด ์‹œ๊ฐํ™”

par(mfrow=c(1,1))



2) ์  ์ฐจํŠธ (ํ™œ์šฉ๋„ ๋‚ฎ์Œ)

dotchart(chart_data, color=c("green","red"),
         lcolor="black", 
         pch=1:2, labels=names(chart_data), #pch : ์ ์˜ ๋ชจ์–‘
         xlab="๋งค์ถœ์•ก",
         main="๋ถ„๊ธฐ๋ณ„ ํŒ๋งคํ˜„ํ™ฉ ์  ์ฐจํŠธ ์‹œ๊ฐํ™”",
         cex=1.2) #cex=1.2 : 1.2๋ฐฐ ํ™•๋Œ€/์ถ•์†Œ


3) ํŒŒ์ด ์ฐจํŠธ : ์ ์œ ์œจ ์‹œ๊ฐํ™”

pie(chart_data, labels=names(chart_data),
    border='blue', col=rainbow(8), cex=1.2) #border : ๊ฒฝ๊ณ„์„ 


ํŒŒ์ด ์ฐจํŠธ ์ฃผ์˜์‚ฌํ•ญ : ์ค‘๋ณต์‘๋‹ต ๋ฐ˜์˜ ์•ˆ ๋จ (๋น„์œจ ์ œ๊ณต)

genre = c(45,25,15,30) #๊ฐ ๊ฐ’์ด 100์ค‘ ์–ด๋А์ •๋„์˜ ๋น„์œจ์„ ์ฐจ์ง€ํ•˜๋Š”์ง€
sum(genre)
names(genre) = c('์•ก์…˜','์Šค๋ฆด๋Ÿฌ','๊ณตํฌ','๋“œ๋ผ๋งˆ') #๊ฐ ์›์†Œ์— ์ด๋ฆ„ ์ถ”๊ฐ€
genre

pie(genre, labels=names(genre), #๋ฏธ๋ฆฌ ์ง€์ •ํ•ด๋’€๋˜ name ๊ฐ’ ๊บผ๋‚ด์˜ค๊ธฐ
    col=rainbow(4))
title(main='์˜ํ™” ์„ ํ˜ธ๋„ ์กฐ์‚ฌ๊ฒฐ๊ณผ', cex.main=2)


๋น„์œจ ๋ฐ˜ํ™˜

ratio=prop.table(genre)*100 
ratio=round(ratio,4) #์†Œ์ˆ˜์  4์ž๋ฆฌ๊นŒ์ง€๋งŒ ์ถœ๋ ฅ


abels์— ๋น„์œจ ์ ์šฉ

labels=paste(names(genre), '\n', ratio) #paste : ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์คŒ(๋ ˆ์ด๋ธ”, ์ค„๋ฐ”๊ฟˆ, )
labels


labels๊ฐ’์„ ์ฐจํŠธ์— ์ถ”๊ฐ€

pie(genre, labels=labels, #๋ฏธ๋ฆฌ ์ง€์ •ํ•ด๋’€๋˜ name ๊ฐ’ ๊บผ๋‚ด์˜ค๊ธฐ
    col=rainbow(4))
title(main='์˜ํ™” ์„ ํ˜ธ๋„ ์กฐ์‚ฌ๊ฒฐ๊ณผ', cex.main=2)

 





2. ์—ฐ์†ํ˜• ๋ณ€์ˆ˜ ์‹œ๊ฐํ™”
์ฃผ์–ด์ง„ ๋ฒ”์œ„ ์•ˆ์˜ ๋ชจ๋“  ์—ฐ์† ๊ฐ’(์‹ค์ˆ˜ ๊ฐ’)์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜
์‹œ๊ฐ„, ๊ธธ์ด, ํ‚ค, ๋ชธ๋ฌด๊ฒŒ, ๋‚˜์ด...

1) ์ƒ์ž ๊ทธ๋ž˜ํ”„
์š”์•ฝํ†ต๊ณ„ ์ •๋ณด -> ์‹œ๊ฐํ™” ๋„๊ตฌ

[๋ถ„์„๊ธฐ์‚ฌ ์˜ˆ์ œ] ์š”์•ฝํ†ต๊ณ„์—์„œ ๋ณผ ์ˆ˜ ์—†๋Š” ์ •๋ณด๋Š”?
[๋ณด๊ธฐ] ์‚ฌ๋ถ„์œ„์ˆ˜, ํ‰๊ท , ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’, ์ด์ƒ์น˜, ๋ถ„์‚ฐ
[์ •๋‹ต] ๋ถ„์‚ฐ

VADeaths
summary(VADeaths)
boxplot(VADeaths) #๊ตต์€ ์ ์„ :Dedian
#summary ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ฐจํŠธ

VADeaths[,1] #Rural Male
quantile(VADeaths[,1]) #0%   25%   50%   75%   100% 
                       #11.7 18.1  26.9  41.0  66.0 
                       #min  1st   2nd   3rd   max

 

 

2) ํžˆ์Šคํ† ๊ทธ๋žจ : ๊ฐ ๊ณ„๊ธ‰์˜ ๋นˆ๋„์ˆ˜

str(iris)
table(iris$Species) #์ง‘๋‹จ๋ณ„ ๋นˆ๋„์ˆ˜

range(iris$Spal.Lenght) #4,3,7,9


(1) ๊ธฐ๋ณธ ํžˆ์Šคํ† ๊ทธ๋žจ

hist(iris$Sepal.Length, xlab='๊ฝƒ๋ฐ›์นจ ๊ธธ์ด',
     main='๋ถ“๊ฝƒ์˜ ๊ฝƒ๋ฐ›์นจ ๊ธธ์ด')


(2) ๊ณ„๊ธ‰ ์ˆ˜ ์กฐ์ •

hist(iris$Sepal.Length, xlab='๊ฝƒ๋ฐ›์นจ ๊ธธ์ด',
     breaks=30,
     main='๋ถ“๊ฝƒ์˜ ๊ฝƒ๋ฐ›์นจ ๊ธธ์ด')


(3) ํ™•๋ฅ  ๋ฐ€๋„ ํ•จ์ˆ˜(pdf)
step1 : hist ๋ฐ€๋„ ๋‹จ์œ„ ๋ณ€๊ฒฝ

hist(iris$Sepal.Width, xlab='๊ฝƒ๋ฐ›์นจ ๋„“์ด',
     main='๋ถ“๊ฝƒ์˜ ๊ฝƒ๋ฐ›์นจ ๋„“์ด',
     freq=FALSE, breaks=30)


step2 : ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜(pdf) -> ํ™•๋ฅ  ๋ฐ€๋„ ์ถ”์ • -> ๊ณก์„  ์ถ”๊ฐ€

lines(density(iris$Sepal.Width), col='red') #lines:๊ณก์„  ์ถœ๋ ฅ ํ•จ์ˆ˜


(4) ์ •๊ทœ๋ถ„ํฌ ๊ณก์„ 

range(iris$Sepal.Width) #2.0 4.4


vector ๋ณ€์ˆ˜ ์ƒ์„ฑ

x = seq(2.0, 4.4, 0.1)
x 
curve(dnorm(x, mean=mean(iris$Sepal.Width),#curve : ์ง์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณก์„ ์œผ๋กœ dnorm : ์ •๊ทœ๋ถ„ํฌ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํ•จ์ˆ˜
            sd=sd(iris$Sepal.Width)),
      col='blue', add = TRUE)

* ์™œ๋„์™€ ์ฒญ๋„๋กœ ์ •๊ทœ๋ถ„ํฌ ์—ฌ๋ถ€ ๊ตฌ๋ถ„๊ฐ€๋Šฅ

 

 



3. ์‚ฐ์ ๋„ : 2๊ฐœ ๋ณ€์ˆ˜ ์ด์šฉ

plot(iris$Sepal.Length, iris$Petal.Length) #plot(x,y) ์ปด๋งˆ๊ตฌ๋ถ„
plot(iris$Sepal.Length ~ iris$Petal.Length) #plot(y~x) ํ•„๋“œ๊ตฌ๋ถ„


1๊ฐœ ๋ณ€์ˆ˜ ์ด์šฉ

price = runif(n=100, min=1, max=100) #1~100์‚ฌ์ด์˜ ๋‚œ์ˆ˜(์ž„์˜๊ฐ’)
price

plot(price) #x=index, y=price
par(mfrow=c(2,2)) # 2ํ–‰ 2์—ด ์ฐจํŠธ ๊ทธ๋ฆฌ๊ธฐ
plot(price, type="l") # ์œ ํ˜• : ์‹ค์„ 
plot(price, type="o") # ์œ ํ˜• : ์›ํ˜•๊ณผ ์‹ค์„ (์›ํ˜• ํ†ต๊ณผ)
plot(price, type="h") # ์ง์„ 
plot(price, type="s") # ๊บพ์€์„ 


plot() ํ•จ์ˆ˜ ์†์„ฑ : pch : ์—ฐ๊ฒฐ์  ๋ฌธ์žํƒ€์ž…-> plotting characher-๋ฒˆํ˜ธ(1~30)

plot(price, type="o", pch=5) # ๋นˆ ์‚ฌ๊ฐํ˜•
plot(price, type="o", pch=15)# ์  ๋ชจ์–‘์ด ์ฑ„์›Œ์ง„ ๋งˆ๋ฆ„๋ชจ
plot(price, type="o", pch=20, col="blue") #color ์ง€์ •
plot(price, type="o", pch=20, col="orange", cex=1.5) #character expension(ํ™•๋Œ€)
plot(price, type="o", pch=20, col="green", cex=2.0, lwd=3) #lwd : line width

 

๋งŒ๋Šฅ์ฐจํŠธ

methods(plot) #29๊ฐœ ๊ฐ์ฒด


1) ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ (์ถ”์„ธ์„ ์— ์ ํ•ฉ)

WWWusage
plot(WWWusage) #x์ถ•:ํ†ต๊ณ„ y์ถ•:์‹œ๊ฐ„์˜ ํ๋ฆ„


2) ํšŒ๊ท€๋ชจ๋ธ -> ํšŒ๊ท€๋ถ„์„ ์ฐจํŠธ (์ž๋™์œผ๋กœ ์ƒ์„ฑ)

names=iris #iris์˜ ๋ณ€์ˆ˜๋ช…๋งŒ ์ถ”์ถœ
model = lm(Petal.Length~Sepal.Length, data=iris) #formul:์‹. y(์ข…์†๋ณ€์ˆ˜)~x(๋…๋ฆฝ๋ณ€์ˆ˜)


์‚ฐ์ ๋„

plot(Petal.Length~Sepal.Length, data=iris)


ํšŒ๊ท€์„  

abline(model, col='red') #x์™€ y์˜ ๋น„๋ก€๊ทธ๋ž˜ํ”„
plot(model)


plot 2๊ฐœ๋ฅผ ๊ฒน์น˜๊ธฐ

plot(iris$Sepal.Length, type='o', ann=FALSE, col='blue') #ann:์ถ•์˜ ์ด๋ฆ„ FALSE ์ œ์™ธ
par(new=T) #๊ทธ๋ž˜ํ”„ ๊ฒน์น˜๊ธฐ
plot(iris$Petal.Length, type='o', axes=FALSE, ann=FALSE, col='red')

* axes = FALSE : ์ถ•์˜ ๋ˆˆ๊ธˆ ๋ˆ„๋ฆ„ ์ œ์™ธ

๋ฒ”๋ก€ ์ถ”๊ฐ€

legend(x=0, y=7, legend=c('๊ฝƒ๋ฐ›์นจ์˜ ๊ธธ์ด','๊ฝƒ์žŽ์˜ ๊ธธ์ด'),
                          col=c('blue','red'), lty=1)


4)์‚ฐ์ ๋„ ํ–‰๋ ฌ(scatter matrix) : ๋ณ€์ˆ˜ ๋น„๊ต

pairs(iris[,-5], col=iris$Species) #์—ฐ์†ํ˜• ๋ณ€์ˆ˜ 4๊ฐœ ์‚ฌ์šฉ
#setosa๋งŒ ์„ ํ˜•์„ฑ์ด ๋ชจ์ž๋žŒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ
plot(iris)





4. 3์ฐจ์› ์‚ฐ์ ๋„

3๊ฐœ์˜ ์š”์ธ์„ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Œ

install.packages('scatterplot3d')
library(scatterplot3d)


๊ฝƒ์˜ ์ข…๋ฅ˜๋ณ„ ๋ถ„๋ฅ˜ 

iris_setosa = iris[iris$Species == 'setosa',] #[ํ–‰์— ๋Œ€ํ•œ ์ƒ‰์ธ, (์—ด ์ƒ๋žต)]: #'setosa' 50๊ฐœ๋งŒ ์„œ๋ธŒ์…‹์œผ๋กœ ๋งŒ๋“ค์–ด์ง.
iris_versicolor = iris[iris$Species == 'versicolor',]
iris_virginica = iris[iris$Species == 'virginica',]
dim(iris_setosa) #50๊ฐœ, 5๊ฐœ


ํ”„๋ ˆ์ž„ ์ƒ์„ฑ
scatterplot3d(๋ฐ‘๋ณ€, ์˜ค๋ฅธ์ชฝ๋ณ€, ์™ผ์ชฝ๋ณ€, type='n') 

d3 <- scatterplot3d(iris$Petal.Length, iris$Sepal.Length, iris$Sepal.Width, type='n')
#type='n' : ๊ธฐ๋ณธ ์‚ฐ์ ๋„ ์ œ์™ธ


๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜ ์‹œ๊ฐํ™”

d3$points3d(iris_setosa$Petal.Length, iris_setosa$Sepal.Length,
            iris_setosa$Sepal.Width, bg='orange', pch=21) #bg:์ƒ‰๊น”

d3$points3d(iris_versicolor$Petal.Length, iris_versicolor$Sepal.Length,
            iris_versicolor$Sepal.Width, bg='blue', pch=23) #pch=23:๋งˆ๋ฆ„๋ชจ

d3$points3d(iris_virginica$Petal.Length, iris_virginica$Sepal.Length,
            iris_virginica$Sepal.Width, bg='green', pch=25)

+ Recent posts