본문 바로가기
실용적인프로그래밍/R

[R] ggplot2 package 기초 (qplot, ggplot)

by 인포메틱스 2020. 7. 20.
반응형

오늘은 ggplot2의 기초에 대해서 포스팅 해보도록 하겠습니다.

 

ggplot2은 R에서 아주 중요한 plot만드는 tool입니다.

 

 


ggplot2에는  plot을 그리기 위한 방법이 ggplot(), qplot() 이렇게 두가지가 있습니다.

 

qplot의 경우 대략적으로 그릴때 사용하고, ggplot의 경우는 세세한 컨트롤이 필요할때 사용합니다.

 

주로 논문을 쓰거나 할때는 ggplot을 이용합니다.

 

실제로 한번 차이를 비교해 봅시다.

 

1. ggplot, qplot의 차이점

library(ggplot2)
data(iris)
head(iris)
> head(iris)
  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

 

iris데이터를 이용하여 그림을 그릴건데 qplot의 경우는 다음과 같은 코드면 알아서 scatter plot이 그려집니다.

qplot(data=iris,x = Sepal.Length,y = Petal.Length)

그러나 반대로 ggplot의 경우에는 같은 방식으로 할 경우

ggplot(data=iris)+aes(x = Sepal.Length,y = Petal.Length)

아무것도 나타나지가 않습니다.  ggplot에는 어떤 그래프를 그릴 것인지 알려 줘야합니다.

 

그래서 qplot과 같은 형태로 그리려면 다음과 같이 바꿔주어야 합니다.

ggplot(data=iris)+aes(x = Sepal.Length,y = Petal.Length)+geom_point()

qplot과 ggplot의 차이는 세세하게 바꿀수 있느냐 없느냐의 차이입니다.

 

2. ggplot 여러 그림 넣기

 

ggplot에서는 일반 plot을 만들 때와 같이 par(),mfrow() 를 이용한 여러 그림을 같이 넣는 방법이 통하지 않습니다.

 

그래서 ggplot의 여러가지 그림을 넣을 수 있도록 만든 package가 있습니다. gridExtra라는 패키지로 간편하게 사용이 가능합니다.

 

예시로 qplot을 이용해서 ggplot에서 그릴수있는 여러 그래프들을 그려보도록 하겠습니다.

library(gridExtra)
par(mfrow=c(3,3))
p1=qplot(iris$Sepal.Length,iris$Sepal.Width,color='red',geom = 'line')
p2=qplot(iris$Sepal.Length,geom='histogram')
grid.arrange(p1,p2,ncol=2)
p3=qplot(iris$Sepal.Length,geom='dotplot')
p4=qplot(iris$Sepal.Length,geom='density')
p5=qplot(iris$Sepal.Length,geom='freqpoly')
p6=qplot(iris$Sepal.Length,geom='bar')
p7=qplot(iris$Sepal.Length,iris$Sepal.Width,geom='polygon')
p8=qplot(iris$Sepal.Length,iris$Sepal.Width,geom='path')
p9=qplot(iris$Sepal.Length,geom='ribbon',ymin=1,ymax=20)
grid.arrange(p1,p2,p3,p4,p5,p6,p7,p8,p9,ncol=3)

 

다음과 같이 여러 개의 ggplot 그림을 넣을 수 있습니다.

 

3. 그림 저장

 

그림 저장하는 방법은 R studio를 이용하면 쉽게 저장이 가능하나! 벡터이미지나 tiff의 경우 그리려는 점들이 많을 수록 (예시 whole genome을 이용한 manhattan plot을 그릴시에 엄청 느리거나 꺼지는 경우가 있습니다.)

 

그럴때는 기본적인 png, svg 이런 기능들을 이용해도 되나, ggplot에서는 ggsave가 있습니다.

 

논문에 그림을 추가할때 가장 중요한 dpi도 조절이 가능하기 때문에 유용합니다.

p1=ggplot(aes(x=Sepal.Length,y=Sepal.Width),data=iris)
p2=p1+geom_point()
p3=p2+geom_point(color='red')
p4=p3+geom_line()
result<-grid.arrange(p1,p2,p3,p4,ncol=2)
ggsave(savepath,plot = result,width = 17,height = 14,units = 'cm',dpi = 1000)

 


여기까지 기본적인 ggplot 그림 그리는 방법을 포스팅하였습니다.

 

 다음 포스팅에서는 본격적인 ggplot그림그리는 방법들을 소개하도록 하겠습니다.

 

감사합니다.


유용하셨거나, 잘 보셧다면 주변 광고 한번씩만 클릭 부탁드립니다! 감사합니다!

728x90
반응형

댓글