플롯을 디스크에 이미지로 저장하는 방법은 무엇입니까?
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
.
을 계속 보려면 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")
이미지의 형식은 파일 이름에 대해 선택한 확장자에 따라 결정됩니다.는 다으로추변전수있다니습달할수를매에 될 수 .ggsave
width
,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
'source' 카테고리의 다른 글
스프링 부트가 있는 여러 Rabbitmq 대기열 (0) | 2023.07.09 |
---|---|
Git Stash의 용도는 무엇입니까? (0) | 2023.07.09 |
python에서 한 항목을 제외한 모든 항목 인덱싱 (0) | 2023.07.09 |
시스템 테이블 마스터의 목적은 무엇입니까?spt_values 및 그 값의 의미는 무엇입니까? (0) | 2023.07.09 |
네 개의 테이블에서 선택하고 일부 결과를 하나의 열로 그룹화 (0) | 2023.07.09 |