2016-10-12 1 views
0

은 내가 PNG로 저장하는 간단한 플롯을 생성 (BTW, 그 프랑스어의 체질량 지수입니다) : 지금은 rasterImage 라이브러리를 사용하여 PDF로 가져R을 사용하여 pdf로 png 가져 오기 : 왜 그렇게 나빠 보이나요?

png("test.png", res=72) 
imc <- 20 
par(mai=c(2.8,0.2,0.2,0.2)) 
y.up = 0.99 
plot(1, type = "n", axes = F, xlab = "kilogrammes", ylab = "", xlim = c(0, 40)) 
imcVal = c(0, 16.5, 18.5, 25, 30, 35, 40, 45) 
text(x = 10, y = y.up * 1.2, adj=c(0,0), "Indice de Masse Corporelle", cex=2) 
rect(xleft = 0, xright = 16.5, ybottom = 0, ytop = y.up, border = NA, col = "orange") 
rect(xleft = 16.5, xright = 18.5, ybottom = 0, ytop = y.up, border = NA, col = "yellow") 
rect(xleft = 18.5, xright = 25, ybottom = 0, ytop = y.up, border = NA, col = "cyan") 
rect(xleft = 25, xright = 30, ybottom = 0, ytop = y.up, border = NA, col = "yellow") 
rect(xleft = 30, xright = 35, ybottom = 0, ytop = y.up, border = NA, col = "orange") 
rect(xleft = 35, xright = 40, ybottom = 0, ytop = y.up, border = NA, col = "red")  
points(x = imc, y = y.up * 1.05, pch = 25, col = "black", bg = "black", cex = 4) 
text(x = 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Famine") 
text(x = 16.5 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Malnutrition") 
text(x = 18.5 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Normal") 
text(x = 25 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Surpoids") 
text(x = 30 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Obésité modérée") 
text(x = 35 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Obésité sévère") 
dev.off() 

plotpng

, I 내가 매트릭스 레이아웃을 만들 수 있도록 포함하는 다른 플롯을해야합니다 ...

library(png) 
f <- readPNG("test.png") 
pdf("test.pdf",paper="a4") 
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE)) 
plot(0, xaxt='n', yaxt='n', xlim=c(0,1), ylim=c(0,1), xlab="", ylab="", axes=F) 
lim <- par() 
rasterImage(f, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4]) 
dev.off() 

을 나는이 끔찍한 낮은 해상도 플롯을 얻을 plotpdf

나는 png 및 pdf 라이브러리의 다양한 매개 변수로 나뉘었지만 지금까지 단서를 찾지 못했습니다. PDF 파일 기능을 사용할 수

+0

BMI는 kg/m^2이다. 고해상도로 렌더링 한 다음 PNG를 축소 해보십시오. –

답변

0

직접

pdf("test.pdf") 
imc <- 20 
par(mai=c(2.8,0.2,0.2,0.2)) 
y.up = 0.99 
plot(1, type = "n", axes = F, xlab = "kilogrammes", ylab = "", xlim = c(0, 40)) 
imcVal = c(0, 16.5, 18.5, 25, 30, 35, 40, 45) 
text(x = 10, y = y.up * 1.2, adj=c(0,0), "Indice de Masse Corporelle", cex=2) 
rect(xleft = 0, xright = 16.5, ybottom = 0, ytop = y.up, border = NA, col = "orange") 
rect(xleft = 16.5, xright = 18.5, ybottom = 0, ytop = y.up, border = NA, col = "yellow") 
rect(xleft = 18.5, xright = 25, ybottom = 0, ytop = y.up, border = NA, col = "cyan") 
rect(xleft = 25, xright = 30, ybottom = 0, ytop = y.up, border = NA, col = "yellow") 
rect(xleft = 30, xright = 35, ybottom = 0, ytop = y.up, border = NA, col = "orange") 
rect(xleft = 35, xright = 40, ybottom = 0, ytop = y.up, border = NA, col = "red")  
points(x = imc, y = y.up * 1.05, pch = 25, col = "black", bg = "black", cex = 4) 
text(x = 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Famine") 
text(x = 16.5 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Malnutrition") 
text(x = 18.5 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Normal") 
text(x = 25 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Surpoids") 
text(x = 30 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Obésité modérée") 
text(x = 35 + 0.1, y = y.up * 0.95, srt = -90, adj = c(0, 0), "Obésité sévère") 
dev.off() 
+0

감사합니다. 그러나 나중에 다른 플롯을 하나의 리포트처럼 조합하려고합니다. –

+2

@XavierPrudent Rmarkdown에서 PDF 리포트를 작성 했습니까? –

+0

Richard 님, RStudio의 다른 멋진 도구 인 Rmarkdown으로 전환하겠습니다. –