2013-10-14 1 views
5

축, 레이블, 여백 등이없는 image()을 사용하여 매트릭스를 플롯하고 저장하려고합니다. 이미지는 셀의 수가 저장된 플롯의 픽셀 수에 해당합니다. R 그래픽 장치에서는 괜찮은 것처럼 보이지만 파일에 플롯을 저장하면 이미지의 아래쪽과 오른쪽에 항상 1 픽셀의 흰색 여백이 유지됩니다. 모든 형식을 시도했지만 성공하지 못했습니다. 이미지 조작에 김프를 사용하고 있습니다.플롯의 1 픽셀 너비의 흰색 여백 (아래쪽 및 오른쪽)을 제거 할 수 없습니다.

예제 코드 :

png("heatmap.png",w=400,h=400) 
par(mar = c(0,0,0,0)) 
require(grDevices) # for colours 
x <- y <- seq(-4*pi, 4*pi, len=400) 
r <- sqrt(outer(x^2, y^2, "+")) 
image(z = z <- cos(r^2)*exp(-r/6), col=gray((0:32)/32),axes = FALSE) 
dev.off() 
+1

이것은 가치있는 버그 리포트입니다. – Thomas

+1

@Thomas하지만 버그는'WindowsGDI' 장치 드라이버에있을 수 있습니까? (나는 당신이 R core에 대한 버그 리포트를 제출하는 것을 의미한다고 가정한다.) –

답변

3

인수 useRaster=TRUE를 사용하여이 문제가 해결 될 :

png("heatmap.png",w=400,h=400) 
par(mar = c(0,0,0,0)) 
require(grDevices) # for colours 
x <- y <- seq(-4*pi, 4*pi, len=400) 
r <- sqrt(outer(x^2, y^2, "+")) 
z <- cos(r^2)*exp(-r/6) 
image(z, col=gray((0:32)/32), axes=FALSE, useRaster=TRUE) 
dev.off() 

enter image description here

7

것은 내가 가서 당신이 윈도우에있는 가정거야. png은 기본적으로 플롯하기 위해 WindowsGDI 장치를 사용하는 것으로 보입니다.

png("heatmap.png",w=400,h=400 , type="cairo") 

enter image description here

경계가 사라 ... type = "cario"를 설정하여, 대신 cairographics를 사용합니다. WindowsGDI 기기에서 이것이 발생하는 이유에 대한 답변은 grDevices::windows 도움말 페이지에서 확인하실 수 있습니다 ...

+0

+1 -이 옵션은보다 일반적으로 적용 가능하다. - 'useRaster = TRUE' 옵션은 "그리드가 반드시 규칙적이어야한다"고 요구한다. –

+0

@Marcinthebox 어쨌든 WindowsGDI 장치에서 이상한 행동을하지만 고맙습니다. –

관련 문제