R/강의복습

[22.08.12] 5일차 차트그리기(plot, barplot, pie)

peach_h 2022. 8. 20. 23:38
☆ 오늘 강의 요약 ☆

차트 관련 함수
plot(데이터) : 데이터로 차트를 그려주는 함수
 - plot( x축값, y축값, main="제목", xlab="x축제목", ylab="y축제목", xlim=c(시작,끝), ylim=c(시작,끝)
par(bg = x) : 차트 배경을 x색으로 바꿔주는 함수
title( ) : 각 타이틀의 색이나 폰트 크기 변경
axis( ) : 눈금의 색을 변경할 때 사용하는 함수
 -  axis(1, ) : x축 / axis(2, ) : y축에 눈금이 추가된다.
par(mfrow=c(행의수,열의수)) : 한 화면에 나오는 그래프 수를 정할 수 있다.
 - dev.off( ) 나 par(mfrow=c(1,1))을 실행하면 다시 차트가 1개만 나온다.
lines( ) : 차트위에 차트 추가하는 함수
abline( ) : 차트에 선을 추가해준다 
lm( ) : 추세선(선형회귀모델) 만드는 함수
rainbow(n) : n개로 무지개 색을 생성하는 함수
label( ) : 차트에 원하는 내용을 추가할 수 있다.
legend( ) : 각 파이에 대한 설명인 범주를 추가 

prop.table :  table 구조의 비율을 구할 수 있다.
round(데이터, 자릿수) : 자릿수 까지 반올림하는 함수
dev.off( ) :기존의 설정값을 지울 때 사용
attach(x) : 데이터를 찾는 경로를 x로 지정
detach(x) : attach를 해제시킴

차트에 쓰이는 명령어
ann=F : 축이름이 안나온다.
col = 차트 선의 색, rgb로 직접 원하는 색을 고를 수 있다.
axes = FALSE : 차트의 눈금이 없어진다.
pch : 차트의 모양
cex : 차트의 크기

 

기본 차트 그리기
x<-c(1,2,3,4,5)
plot(x)

기본을 y축으로 생각하여, 자동으로 x축이 생성된다.

 

 

x <- seq(2, 10, 2)
plot(x)

y축만 바껴서 나오는 모습

 

 

x <-1:10
y <-2*x + 1

plot(x, y)

 

 

exam 자료 차트 그리기
setwd("f:\\r_workspace\\Data")
exam <- read.csv("csv_exam.csv")

#plot함수에 데이터프레임 객체를 한번에 전달한다 
plot(exam)

 

 

iris 차트 그리기
#data.frame에 필드개수가 너무 많으면 차트가 완성이 안된다. 
plot(iris)

 

 

mpg 차트 그리기
mpg <- as.data.frame(ggplot2::mpg)
dim(mpg)

#열의 개수 * 열의개수
plot(mpg)

234행 11열

plot을 하면 열*열 만큼의 차트가 나온다.

두 변수사이의 상관관계를 나타내는 차트이기 때문

 

 

 

차트에 제목 붙이기
y<-c(170,165,180,156,167)
x<-c(65, 54, 73, 44, 60)
plot(y, x, main="키와몸무게의상관관계")

plot(x축값, y축값, main="제목")

 

 

 

축 눈금 범위 수정하기
# 크기 순으로 정렬
xx<-x[order(x)]
yy<-y[order(x)]

plot(yy, xx, main="키와몸무게의상관관계", xlab="키", ylab="몸무게",
          xlim=c(150,200), ylim=c(40, 100)
     ,col="red", type="o")

plot( x축값, y축값, main="제목", xlab="x축제목", ylab="y축제목", xlim=c(시작,끝), ylim=c(시작,끝)

 

 

 

type에 따라 달라지는 모습
plot(mpg$hwy, mpg$cty, main="도시와 고속도로 연비비교", 
     xlab="고속도로", ylab="도시", type="p")
     
plot(mpg$hwy, mpg$cty, main="도시와 고속도로 연비비교", 
     xlab="고속도로", ylab="도시", type="l")
     
plot(mpg$hwy, mpg$cty, main="도시와 고속도로 연비비교", 
     xlab="고속도로", ylab="도시", type="b")

plot(mpg$hwy, mpg$cty, main="도시와 고속도로 연비비교", 
     xlab="고속도로", ylab="도시", type="s")

type = "p"
type = "l"
type = "b"
type = "s"

 

차트 색 지정하기 / 축이름 안나오게하기
par(bg="light gray")
plot(exam$id, exam$math, ann=F)

"ann=F"를 추가하면 축이름이 안나온다.

par(bg = x) 차트 배경을 x색으로 바꿔주는 함수

 

plot(exam$id, exam$math, ann=F, type="o", col=rgb(1,0,0.67))

col = 차트 선의 색, rgb로 직접 원하는 색을 고를 수 있다.

 

 

title( xlab="x축", col.lab="blue")
title( ylab="y축", col.lab="green")
title( main="수확과아이디", font.main=3, col.main="blue")

각 타이틀의 색이나 폰트 크기도 title( ) 함수로 직접 변경 가능하다.

 

 

눈금 바꿔보기
plot(1:8, rep(1,8), axes = FALSE, col=1:8, pch=17, cex=2, xlab=NA, ylab=NA)

처음엔 이게 뭔그래픈가 한참봤다..

axes = FALSE : 차트의 눈금이 없어진다.

pch : 차트의 모양

cex : 차트의 크기

 

axis(1, sprintf("%i", 1:8), col="white") #1-x축, 2-y축

axis( ) : 눈금의 색을 변경할 때 사용하는 함수

axis(1, ) : x축 / axis(2, ) : y축에 눈금이 추가된다.

sprintf("%i", 1:8) : 뒤에오는 벡터를 문자열로 전환시킨다 .

 

 

col.lst <- c("blue" , "red", "green" , "bisque", 
             "grey20", "grey90", "green2", "olivedrab2")
             
plot(1:8, rep(1,8), axes = FALSE, col=col.lst, pch=17, cex=2, xlab=NA, ylab=NA)
axis(1, at=1:8, labels = col.lst, col="white", cex=0.6, padj=3)

벡터를 이용하여 직접 차트의 색을 지정할 수도 있다.

 

 

 

 

한 화면에 여러 차트 동시에 그리기
data1 <- data.frame(x=1:10, y=2*x+1, z=2*x+2)

par(mfrow=c(1,3)) #행, 열 벡터 = 1줄에 3개가 나오게
plot(x~y, data1, col=rgb(0,0,1, 0.9))
plot(x~z, data1, col=rgb(0,0,1, 0.9))
plot(z~y, data1, col=rgb(0,0,1, 0.9))

par(mfrow=c(행의수,열의수)) : 한 화면에 나오는 그래프 수를 정할 수 있다.

 

 

plot(x~y, data1, col=rgb(0,0,1, 0.9), type='o')
plot(x~z, data1, col=rgb(0,0,1, 0.9), type='s')
plot(z~y, data1, col=rgb(0,0,1, 0.9), type='l')

각자 다른 타입으로도 나타낼 수 있음 !

 

다시 하나만 나오게 하기
dev.off()
par(mfrow=c(1,1))

dev.off( ) 나 par(mfrow=c(1,1))을 실행하면 다시 차트가 1개만 나온다.

dev.off( ) 는 기존의 설정값을 지울 때 자주 사용한다.

 

 

 

 

차트위에 다른 차트 그리기
exam <- read.csv("csv_exam.csv")
plot(exam$id, exam$math, type="o" )
lines(exam$id, exam$science, type="o")
lines(exam$id, exam$english, type="o")

plot이 잘보이게 빨간색으로 지정함

lines( ) 함수를 이용하면, plot으로 기본 차트를 그린 후, 그 위에 다른 차트를 더 그릴 수 있다.

 

 

 

attach / detach
attach(mtcars)
plot(wt, mpg)

attach를 사용해주면, mtcars$wt라고 지정을 해주지 않아도, 알아서 mtcars의 wt를 찾아내준다.

그래서 간편하게 wt만 써서 mtcars$wt의 효과를 낼 수 있다.

detachattach를 해체시켜주는 함수이다.

그래서 detach 후에는 wt를 찾지 못하는 모습을 확인 할 수 있다.

 

 

 

 

 

차트에 추세선 그리기
plot(mtcars$wt, mtcars$mpg)
abline( lm(mtcars$mpg~mtcars$wt) )   #lm 함수(선형회귀모델)- 추세선
title('연비와 하중의 관계')

abline( ) : 차트에 선을 추가해준다 

lm( ) : 추세선(선형회귀모델) 만드는 함수

 

 

plot(mpg$cty, mpg$hwy, pch=16)
plot(hwy~cty, mpg, pch=16, col=rgb(1,0,1,0.5))
abline( lm(hwy~cty, mpg), col=rgb(0,0,1) )

 

 

원래 값 보관하고 차트 그리기(opar)
dose <- c(20,30,40,45, 60)
drugA<-c(16, 20, 27, 40, 60)
drugB<-c(15, 18, 25, 31, 40)
par(mfrow=c(1,2))
plot(dose, drugA, type='b')
plot(dose, drugB, type='b')

opar <- par(no.readonly=TRUE) #원래값보관

기존의 그래프

 

 

# 옵션수정
par(lty=2, pch=11, col=rgb(1,0,0)) 
plot(dose, drugA, type='b') #사용
plot(dose, drugB, type='b')

수정한 그래프

 

 

par(opar) #원상복구 
plot(dose, drugA, type='b') #사용
plot(dose, drugB, type='b')

opar를 사용하니 원래값으로 돌아왔다!

 

 

 

barplot 그리기
library(RColorBrewer)

n<-7
mycolors <- brewer.pal(n, 'PuOr')
barplot(rep(1,n), col=mycolors)

 

mycolors <- brewer.pal(n, 'Blues')

# 랜덤 샘플뽑아서 차트 만들기
barplot(sample(0:100, 7), col=mycolors)

원래 색이 맘에 안들어서 내가 좋아하는 파랑으로 바꿨다 !

 

 

barplot(sample(0:100, 7), col=mycolors, horiz=T)

horiz = T를 추가하면 차트가 가로로 돌려진다.

 

 

 

 

pie 차트 그리기(원형)
n<-10   
#rainbow 색 생성함수
mycolors<-rainbow(n) 

pie(rep(1,n), labels=mycolors, col=mycolors)

rainbow(n) : n개로 무지개 색을 생성하는 함수

 

mycolors<-gray(0:n/n) 
pie(rep(1,n), labels=mycolors, col=mycolors)

다양한 색으로 원형 차트를 만들 수 있다!

 

 

 

과일 선호도 차트 만들기
#1.디렉토리이동하기 
setwd("f:\\r_workspace\\Data")
#2.파일읽기 
fruit <- read.csv("love_fruits.csv", fileEncoding = "cp949")

# 선호하는 과일의 빈도수
t <- table(fruit$선호과일)

# 과일의 수만큼 무지개색으로 만들기
mycolors <- rainbow( length(t))

barplot(t, col=mycolors)
pie(t, col=mycolors)

 

 

 

비율 구하기
#비율을 구하는 함수  prop.table(테이블구조)
p<- prop.table(t)*100
p

prop.table 함수를 이용하면 table 구조의 비율을 구할 수 있다.

 

 

비율 반올림 하기
#반올림 
r <- round(p, 2)
r

round(데이터, 자릿수) : 자릿수 까지 반올림하는 함수

 

 

 

차트에 퍼센트 추가하기
#table -> data.frame 구조로 바꾼다 
data1 <- data.frame(t)
data1

data1$ratio = r
data1

#컬럼명 바꾸기 
colnames(data1) <- c("kind", "cnt", "ratio")
data1

pie(data1$ratio, main="선호도",  
    labels = paste(data1$ratio, "%"),
    col=mycolors)

label( ) 함수로 차트에 원하는 내용을 추가할 수 있다.

 

 

 

범주 추가하기
legend( 0.5, 1.2, data1$kind, cex=0.8, fill=mycolors)

legend( ) 함수로 각 파이에 대한 설명인 범주를 추가 할 수 있다!

 

 

 

 

펭귄 데이터 활용하기
#팽귄데이터셋 
install.packages("palmerpenguins")
library(palmerpenguins)
data(package = 'palmerpenguins')

# 구조를 미리 보고, 어떤 자료를 가져올지 골라보자
head(penguins)
str(penguins)

# 종, 부리길이, 부리의 넓이, 지느러미 길이
p <- penguins[, c("species", "bill_length_mm", "bill_depth_mm", "flipper_length_mm")]
p

# 결측치 한번에 제거하기
p<-na.omit(p)
p

ggpairs(p,                 # Data frame
        columns = 1:4,        # Columns
        aes(color = species,  # Color by group (cat. variable) / 종에 따라 색다르게나오게하기
            alpha = 0.9))

 

내가 펭귄을 좋아해서 개인적인 사심으로 넣었다.

이제 mpg는 지겨워..

 

 

 

아델리 펭귄 부리 길이 차트 만들기
adel <-penguins %>% filter(species=="Adelie") %>% 
                    select("species","bill_length_mm")

adel
adel <- na.omit(adel)

ggpairs(adel,                 # Data frame
        columns = 1:2,        # Columns
        aes(color = species,  # Color by group (cat. variable)
            alpha = 0.9))

이렇게 select와 filter를 이용해서 원하는 데이터만 골라 차트를 만들 수 있다!

 

 

 

 

 

 

~ 오늘의 강의 후기 ~

다양한 색으로 데이터를 직접 차트로 만들 수 있어서 재밌었다!
데이터 코딩은 어렵다고만 생각했는데, 이렇게 눈으로 다양한 결과를 볼 수 있으니
점점 흥미가 생기는 것 같다.

※ 사용한 교재 : 쉽게 배우는 R 데이터 분석 / 저자 : 김영우