source

플롯을 디스크에 이미지로 저장하는 방법은 무엇입니까?

manysource 2023. 7. 9. 11:17

플롯을 디스크에 이미지로 저장하는 방법은 무엇입니까?

R을 사용하여 간단한 선형 회귀 분석을 표시합니다.그 이미지를 PNG나 JPEG로 저장하고 싶은데 자동으로 가능한가요?(코드를 통해)

두 가지 질문이 있습니다.먼저, 나는 이미 내 모니터에 있는 줄거리를 보고 있는데 그대로 저장하고 싶습니다.둘째, 아직 플롯을 생성하지 않았지만 플롯 코드를 실행할 때 디스크에 직접 저장하고 싶습니다.

두 개의 밀접한 관련이 있는 질문과 각각의 답변이 있습니다.


나중에 스크립트에서 이미지가 생성되는데 디스크에 저장하려면 어떻게 해야 합니까?

그림을 저장하려면 다음 작업을 수행해야 합니다.

  1. , 용사를 하여 장치png(),bmp(),pdf()또는 그와 유사한
  2. 모형도 그리기
  3. 다을사여장닫을 사용하여 .dev.off()

을 림을저기위몇가예코드는에 몇 png파일 이름:

fit <- lm(some ~ model)

png(filename="your/file/location/name.png")
plot(fit)
dev.off()

형식에 .?png,?bmp,?jpeg그리고.?tiff 별도 아뿐만라니의 별도 만 아니라?pdf.

그러나 화면 창의 크기를 조정한 경우와 같이 이미지가 디스크에서 화면에 직접 표시된 동일한 플롯과 다르게 보일 수 있습니다.


그림이 다음 중 하나에 의해 작성된 경우lattice또는ggplot2플롯을 명시적으로 인쇄해야 합니다.이에 대한 자세한 설명과 R FAQ 링크를 참조하십시오. ggplot의 qplot은 소싱실행되지 않습니다.


현재 화면에서 플롯을 보고 있는데 '있는 그대로'를 디스크에 복사하려고 합니다.

dev.print(pdf, 'filename.pdf')

이렇게 하면 대화형 창의 크기 조정에 따라 이미지가 완벽하게 복사됩니다.이 답변의 첫 번째 부분에서와 같이 다음과 같이 대체할 수 있습니다.pdfpng.

을 계속 보려면 R 에그 계 보 려 다 면 옵 사 합 용 니 다 을 션 른 속 림 을 서 ▁r ▁is 다 ▁if 니 ▁option 합 ▁in 사 용 ▁to ▁plot ▁use ▁the ▁another ▁r , ▁seeing ▁you 옵 에 ▁want ▁todev.copy:

X11 ()
plot (x,y)

dev.copy(jpeg,filename="plot.jpg");
dev.off ();

많은 에는 R 서너많플창롯있어경는우게럽지이은무에▁r,경▁if▁in▁windows우있▁use는▁a게▁r,▁you,graphics.off()모든 플롯 창을 닫습니다.

사용하는 경우ggplot2선호되는 절약 방법은 사용하는 것입니다.ggsave플롯을 후을 작성해야 .ggsave:

ggplot(...)
ggsave("plot.png")

이미지의 형식은 파일 이름에 대해 선택한 확장자에 따라 결정됩니다.는 다으로추변전수있다니습달할수를매에 될 수 .ggsavewidth,height,그리고.dpi.

이것처럼.

png('filename.png')
# make plot
dev.off()

또는 이

# sometimes plots do better in vector graphics
svg('filename.svg')
# make plot
dev.off()

또는 이

pdf('filename.pdf')
# make plot
dev.off()

그리고 아마 다른 사람들도 마찬가지일 것입니다.도움말 페이지에 모두 함께 나열됩니다.

첫 번째 질문은, 저는 다음과 같습니다.dev.print대화형으로 일할 때 최고가 되는 것.먼저 그림을 시각적으로 설정하고 표시된 내용에 만족할 때 R에게 현재 그림을 디스크에 저장하도록 요청할 수 있습니다.

dev.print(pdf, file="filename.pdf");

대체할 수 있습니다.pdf다음과 같은 다른 형식으로png.

이렇게 하면 화면에 표시되는 대로 이미지가 그대로 복사됩니다.문제는dev.copy즉, 이미지가 자주 달라 창 크기와 가로 세로 비율을 기억하지 못합니다. 기본적으로 그림이 정사각형이 되도록 합니다.

다른 사람들이 이미 대답한 것처럼 두 번째 질문의 경우 플로팅 명령을 실행하기 전에 출력을 디스크로 유도해야 합니다.

pdf('filename.pdf')
plot( yourdata )
points (some_more_data)
dev.off() # to complete the writing process and return output to your monitor

R Studio http://rstudio.org/ 을 사용하면 원하는 형식과 원하는 해상도로 플롯을 저장할 수 있는 특별한 메뉴가 있습니다.

다음을 사용하여 장치를 여는 경우png(),bmp(),pdf()Andrie가 제안한 등(최적의 답변), 플롯이 있는 창은 팝업되지 않고 *.png, *bmp 또는 *.pdf 파일만 생성됩니다.R은 제한된 수의 그래픽 창만 처리할 수 있기 때문에 대량 계산에 편리합니다.

그러나 그림을 보고 저장하려면 다음을 클릭합니다.savePlot(filename, type)그림이 그려지고 그림이 포함된 창이 활성화된 후에 표시됩니다.

plotpath<- file.path(path, "PLOT_name",paste("plot_",file,".png",sep=""))

png(filename=plotpath)

plot(x,y, main= file)

dev.off()

이러한 답변에 추가하려면 스크리닝할 플롯을 생성하는 호출(기본 장치)이 포함된 R 스크립트가 있는 경우 터미널에서 스크립트를 R로 리디렉션하여 pdf 파일(비인터랙티브 셸의 기본 장치) "Rplots.pdf"(기본 이름)에 모두 저장할 수 있습니다(예: Linux 또는 OS X를 실행 중인 경우).

R < myscript.R --no-save

필요에 따라 jpg/png으로 변환할 수 있습니다.

경우에 따라 기본 그림을 저장하고 인쇄하려는 경우가 있습니다.저는 잠시 시간을 들여 다음과 같은 유틸리티 기능을 고안했습니다.

x = 1:10

basesave = function(expr, filename, print=T) {
  #extension
  exten = stringr::str_match(filename, "\\.(\\w+)$")[, 2]

  switch(exten,
         png = {
           png(filename)
           eval(expr, envir = parent.frame())
           dev.off()
         },
         {stop("filetype not recognized")})


  #print?
  if (print) eval(expr, envir = parent.frame())

  invisible(NULL)
}

#plots, but doesn't save
plot(x)

#saves, but doesn't plot
png("test.png")
plot(x)
dev.off()

#both
basesave(quote(plot(x)), "test.png")

#works with pipe too
quote(plot(x)) %>% basesave("test.png")

다음을 사용해야 합니다.quote그렇지 않으면plot(x)콜은 글로벌 환경에서 실행됩니다.NULL에 전달됨basesave().

dev.copy(png,'path/pngFile.png')
plot(YData ~ XData, data = mydata)
dev.off()

언급URL : https://stackoverflow.com/questions/7144118/how-to-save-a-plot-as-image-on-the-disk