본문 바로가기

[R] 그래프 저장하기 png, jpeg, ggsave

R Programming/Data Visualization by Mandarim_ 2023. 11. 10.

이번 게시글에선 R의 그래프 저장하는 방법을 다뤄보도록 한다.

Rstudio는 직접 마우스로 클릭 클릭하여 Plots 패널에 그려진 그래프를 저장할 수 있다.

하지만, 많은 양의 그래프를 반복적으로 작업하여 저장해야 할 때 귀찮을 수밖에 없다.

그래프를 "코드"를 사용하여 저장하는 법에 대해 다루겠다.

 

1. png(), jpeg(), bmp(), tiff() 함수의 사용.

위의 4가지 함수들은 R에서 만든 그래프를 각각의 파일 형식으로 저장하기 위한 함수이다.

4가지 함수는 사용법이 같으며, png() 함수에서 .jpeg 확장자로도 저장은 가능하다..

 

먼저, png()를 통해 코드 예시를 보자.

png() 함수와 dev.off() 사이에 그리고자 하는 그래프를 그리는 코드를 작성하면 된다.

아래의 코드에서 사용하면 좋은 옵션들은 다음과 같다.

  • filename: 출력할 파일의 경로. 혹은 현재 파일 위치에 저장하고 싶다면, 아래처럼 그래프 이름만 입력한다. (단, 파일 확장자명은 함수가 아니라 이 옵션에서 설정되므로 확장자를 꼭 지정하자.)
  • width, height: 출력할 파일의 너비와 높이.
  • units: 앞에서 설정한 너비와 높이의 단위 (px 이 기본 옵션이며, in, cm, mm 사용 가능).
  • bg (background): 배경색, 보통 투명한 배경을 원한다면 transparent, 하얀 배경을 원한다면 white를 사용.
# R 그래프 저장 코드
x= 1:20
y= (x-10)^2

png(filename="Basic.png", width=300, height=300, unit="px",bg="transparent")
plot(x=x, y=y)
dev.off()

 

아래와 같이 그래프 확인이 가능하며, ggplot으로 그려진 그래프도 해당 함수로 저장 가능하다.

저장된 그래프 확인!저장된 plot
저장된 위치에서 다음과 같은 그래프를 확인할 수 있다.

 


2. ggsave() in ggplot2 package

ggsave()는 ggplot 함수를 통해 그려진 그래프를 저장하는 함수이다.

ggsave()에서 사용가능한 옵션은 다음과 같다. 미리 그래프를 객체로 저장해 두고, 나중에 각 객체를 저장해도 된다는 특징이 있다.

그 외로 거의 옵션은 유사하다.

  • filename: 출력할 파일의 경로. 혹은 현재 파일 위치에 저장하고 싶다면, 아래처럼 그래프 이름만 입력한다. (device 옵션은 지정하지 않아도 특별한 에러 없이 잘 저장되는 것 같다.)
  • width, height: 출력할 파일의 너비와 높이.
  • units: 앞에서 설정한 너비와 높이의 단위 (px 이 기본 옵션이며, in, cm, mm 사용 가능).
dt <- data.frame(x, y)

g1 <- ggplot(dt, aes(x=x, y=y)) + geom_point()
ggsave(g1, filename="ggBasic.png", device="png", width=600, height=600, unit="px")

 

ggplot 그래프 저장된 것 확인저장된 ggplot
ggplot 그래프 저장 확인

 


3. for 문의 응용

 

이전 글에서 for문으로 ggplot 그래프를 생성하는 법에 대해 다루었다.

이 때, assign()이 아닌 ggsave() + paste0()를 사용한다면 for문마다 생성되는 그래프를 서로 다른 이름으로 저장할 수 있다.

 

 

[R] for 문으로 그래프 생성: ggplot2, for, assign, paste

앞 장에서 여러 그래프 한 번에 타나내는 법을 다루었다. 그래프를 하나씩 g1, g2로 정의하여 gird.arrange() 함수를 이용하여 나타내면 된다. 하지만, 나타내려는 그래프 수가 10개를 넘어간다면, 그

hyemstat.tistory.com

 

위의 게시글을 응용하여 8개의 그림을 개별의 이름으로 저장하는 코드는 다음과 같다.

theme_set(theme_bw())
for (s in 1:8) {
  tmp <- SIM_Results[SIM_Results$setting==s, ]

  g <- ggplot(data=tmp, aes(x=nn, y=mean_ACC, color=Criteria)) + geom_line()+ 
    scale_x_continuous(breaks=c(200, 400, 800) ) + scale_y_continuous(limit=c(0,1))+
    theme(legend.position ='none') +
    xlab("") + ylab("") +  labs(title=paste0("scenario ", s))
  
  file_addr <- paste0('Accuracy_', s, ".png")
  ggsave(g, filename=file_addr, width=600, height=600, units="px")
}
반응형