我在R中绘制多边形并保存它。问题,我面临的是整个绘图保存为png文件但我想只保存多边形中的填充区域。 有办法吗?
x<-c(0.000000000,0.010986328,0.006351471,-0.004634857)
y<-c(0.000000000,0.007232612,0.012841203,0.006199415)
file_name = paste("~/Downloads/Plot", ".png", sep="")
png(file_name,width=1280,height = 720,units="px",res=200)
plot(x,y,axes=FALSE,ylab='',xlab='')+polygon(x,y,col="#FF0000FF")
dev.off()
答案 0 :(得分:0)
如果您正在绘制单图(这是默认值),那么我相信有三种可能的间距来源会导致绘图元素不会延伸到图形设备的边缘:
1:数据坐标限制大于绘图元素的范围。
2:“内部间距”,最好被认为是位于边距内的绘图区域的扩展。
3:保证金。这通常是绘制轴,刻度,刻度标签,轴标签,标题和有时图例的地方。
所有这些间距来源都可以通过以下自定义来消除:
1:将xlim
和ylim
图形参数设置为完全符合目标绘图元素。
2:设置xaxs='i',yaxs='i'
,可以通过抢先par()
来电或初次plot()
来电来完成。
3:使用mar=c(0,0,0,0)
将边距归零。此必须使用par()
之前完成初始plot()
来电。
示例:
## generate data
pts <- data.frame(x=c(0.2,0.4,0.9,0.7),y=c(0.5,0.4,0.5,0.6));
## precompute plot parameters
xlim <- range(pts$x);
ylim <- range(pts$y);
## draw plot
par(mar=c(0,0,0,0));
plot(NA,xlim=xlim,ylim=ylim,xaxs='i',yaxs='i',axes=F,ann=F);
points(pts$x,pts$y,pch=21L);
polygon(pts$x,pts$y,col='red',pch=21L);
多图绘制可能会产生一个额外的间距来源,即外边距,但看起来这与此问题无关。无论如何,我非常确定外边距总是默认为零。
有关相关文档,请参阅par()
。
看起来我误解了这个问题。您想要的是透明背景,这与简单地将图像大小拟合到绘图元素不同。
您可以使用png()
功能通过传递bg='transparent'
将背景设置为透明,如文档页面所述。
例如,这是我用透明背景保存的拟合图像:
请注意,并非所有图像查看器都能正确检测和/或清晰地描绘背景的透明度。我强烈推荐GIMP,这基本上是一个免费的Photoshop版本,虽然功能明显较轻。 GIMP将透明区域描绘为灰色方块的棋盘格,如下所示: