R을 사용하여 간단한 선형 회귀를 플로팅합니다. 해당 이미지를 PNG 또는 JPEG로 저장하고 싶습니다. 자동으로 할 수 있습니까? (코드를 통해)
두 가지 다른 질문이 있습니다. 첫째, 이미 모니터에서 줄거리를보고 있는데 그대로 저장하고 싶습니다. 둘째, 아직 플롯을 생성하지 않았지만 플로팅 코드를 실행할 때 직접 플롯을 디스크에 저장하고 싶습니다.
R을 사용하여 간단한 선형 회귀를 플로팅합니다. 해당 이미지를 PNG 또는 JPEG로 저장하고 싶습니다. 자동으로 할 수 있습니까? (코드를 통해)
두 가지 다른 질문이 있습니다. 첫째, 이미 모니터에서 줄거리를보고 있는데 그대로 저장하고 싶습니다. 둘째, 아직 플롯을 생성하지 않았지만 플로팅 코드를 실행할 때 직접 플롯을 디스크에 저장하고 싶습니다.
답변:
밀접하게 관련된 두 가지 질문과 각각에 대한 답변이 있습니다.
플롯을 저장하려면 다음을 수행해야합니다.
png()
, bmp()
, pdf()
또는 유사한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')
대화식 창에서 수행 한 크기 조정을 고려하여 이미지를 완벽하게 복사해야합니다. 이 답변의 첫 번째 부분 pdf
과 같이와 같은 다른 파일 형식으로 바꿀 수 있습니다 png
.
getwd()
dev.print
. 다른 답변이 필요하다고 생각되는 두 가지 밀접한 관련 질문이 있습니다. 두 번째 하위 질문은 기본적으로 "내 화면에 이미 플롯 한 이미지를 어떻게 저장합니까?"입니다. 편집 내용이 좋지 않은 경우 편집을 자유롭게 개선하십시오.
m3=garchFit(~arma(3,0)+garch(1,1))
와 plot(m3)
.
R에서 플롯을 계속 보려면 다른 옵션을 사용하십시오 dev.copy
.
X11 ()
plot (x,y)
dev.copy(jpeg,filename="plot.jpg");
dev.off ();
R에서 너무 많은 플롯 윈도우가 복잡해지면 graphics.off()
모든 플롯 윈도우를 닫으십시오.
dev.print
화면에서 이미지를 정확하게 복사하기 때문에 더 좋습니다. dev.copy
기본적으로 모든 이미지를 정사각형으로 만듭니다. 대화식으로 모든 것을 멋지게 설정하면 실망 스러울 것입니다.
dev.print()
치수를 정의 폭과 높이 매개 변수. 예 : dev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
ggplot2
원하는 저장 방법 을 사용 하는 경우를 사용 하는 것입니다 ggsave
. 먼저 호출하는 플롯을 만든 후 플롯해야합니다 ggsave
.
ggplot(...)
ggsave("plot.png")
이미지 형식은 파일 이름으로 선택한 확장자에 따라 결정됩니다. 추가 매개 변수로 전달 될 수있다 ggsave
, 특히 width
, height
하고 dpi
.
dev
그래픽 장치가없는 가상 시스템에서 작동했습니다.
이렇게
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 플롯을 저장하고 인쇄하려고합니다. 나는 약간의 시간을 보냈고이 유틸리티 기능을 생각해 냈습니다.
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()
.