在 R 中保存多边形的填充区域
Save Filled Area of Polygon in R
我在 R 中绘制多边形并保存 it.Problem,我面临的是整个图都保存为 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()
如果您正在绘制单人图(默认设置),那么我相信有三种可能的间距来源会导致绘图元素无法延伸到图形设备的边缘:
1: 大于绘图元素范围的数据坐标限制。
2: "internal spacing",最好将其视为位于页边距内的绘图区域的扩展。
3: 页边距。这通常是绘制轴、刻度、刻度标签、轴标签、标题和有时绘制图例的地方。
可以通过以下自定义消除所有这些间距来源:
1: 设置 xlim
和 ylim
图形参数以完美匹配目标绘图元素。
2: 设置 xaxs='i',yaxs='i'
,这可以通过抢占式 par()
调用或初始 plot()
调用来完成。
3: 使用 mar=c(0,0,0,0)
将边距归零。此 必须 在初始 plot()
调用之前 par()
完成。
示例:
## 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'
将背景设置为透明,如文档页面中所述。
例如,这是我用透明背景保存的合身图像:
请注意,并非所有图像查看器都能正确检测到 and/or 清晰描绘背景的透明度。我强烈推荐 GIMP,它基本上是免费的 Photoshop 仿制品,尽管功能明显较轻。 GIMP 将透明区域描述为一种灰色方块的棋盘,看起来像这样:
我在 R 中绘制多边形并保存 it.Problem,我面临的是整个图都保存为 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()
如果您正在绘制单人图(默认设置),那么我相信有三种可能的间距来源会导致绘图元素无法延伸到图形设备的边缘:
1: 大于绘图元素范围的数据坐标限制。
2: "internal spacing",最好将其视为位于页边距内的绘图区域的扩展。
3: 页边距。这通常是绘制轴、刻度、刻度标签、轴标签、标题和有时绘制图例的地方。
可以通过以下自定义消除所有这些间距来源:
1: 设置 xlim
和 ylim
图形参数以完美匹配目标绘图元素。
2: 设置 xaxs='i',yaxs='i'
,这可以通过抢占式 par()
调用或初始 plot()
调用来完成。
3: 使用 mar=c(0,0,0,0)
将边距归零。此 必须 在初始 plot()
调用之前 par()
完成。
示例:
## 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'
将背景设置为透明,如文档页面中所述。
例如,这是我用透明背景保存的合身图像:
请注意,并非所有图像查看器都能正确检测到 and/or 清晰描绘背景的透明度。我强烈推荐 GIMP,它基本上是免费的 Photoshop 仿制品,尽管功能明显较轻。 GIMP 将透明区域描述为一种灰色方块的棋盘,看起来像这样: