r - 使用 par 设置 png 绘图设备的绘图边距

标签 r dictionary plot png

我已经创建了巴西的 choropleth。将绘图保存为 .png 时,绘图的上部和下部会丢失(被覆盖)。这是保存情节的行。

plot.new()
par(omi=c(0,0,0,0), mgp=c(0,0,0),mar=c(0,0,0,0) , family = "D")
par(mfrow=c(1,1),cex=1,cex.lab = 0.75,cex.main=0.2,cex.axis=0.2)
png(filename = "map_cons_g.png", width = 6,height = 6, units = "in", res = 600)
plot(c(-75,-35),c(0,-30),type="n",axes=FALSE,xlab="",ylab="",asp=1.2)
plot(Brazil,col=cols[Brazil$Cons.g_ri],add=TRUE,border="black",lwd=0.5)
dev.off()

为了在不丢失 map 上部和下部的情况下保存绘图,我必须更改坐标以在底部和顶部添加空白(即用 c(5,-33) 替换 c(0,-30) ):
plot.new()
par(omi=c(0,0,0,0), mgp=c(0,0,0),mar=c(0,0,0,0) , family = "D")
par(mfrow=c(1,1),cex=1,cex.lab = 0.75,cex.main=0.2,cex.axis=0.2)
png(filename = "map_cons_g.png", width = 6,height = 6, units = "in", res = 600)
plot(c(-75,-35),c(5,-33),type="n",axes=FALSE,xlab="",ylab="",asp=1.2)
plot(Brazil,col=cols[Brazil$Cons.g_ri],add=TRUE,border="black",lwd=0.5)
dev.off()

这在某种意义上是有效的,我可以看到完整的 map ,但 map 并没有使用图中的所有可用区域。保存绘图时,图形的上部和下部似乎有一些边距。我从来没有遇到过其他类型的情节的问题。

抱歉,我没有足够的“声誉”来发布图片来向您展示 map 的外观。

知道如何解决这个问题吗?

编辑:

下面的评论让我对问题进行了更多的搜索,我终于找到了解决方法。我很抱歉,因为我现在意识到我不了解问题的根源,因此没有尽我所能解释,

似乎 png 重置了情节的外边距。因此,即使我设置了 omi=c(0,0,0,0),这些也不是 png 命令在保存绘图时使用的值。解决方案是在调用 png 后设置绘图参数,以便保存图形。
plot.new()
png(filename = "map_cons_g.png", width = 6,height = 6, units = "in", res = 600)
par(omi=c(0,0,0,0), mgp=c(0,0,0),mar=c(0,0,0,0) , family = "D")
par(mfrow=c(1,1),cex=1,cex.lab = 0.75,cex.main=0.2,cex.axis=0.2)
plot(c(-75,-35),c(5,-33),type="n",axes=FALSE,xlab="",ylab="",asp=1.2)
plot(Brazil,col=cols[Brazil$Cons.g_ri],add=TRUE,border="black",lwd=0.5)
dev.off()

最佳答案

来自 详情?par :

Each device has its own set of graphical parameters.


因此,即使我在 par 中设置了绘图的外边距( omi = c(0,0,0,0) ),这些值被 png 中的参数覆盖保存情节时。
解决方案是在 par 中设置边距参数调用后png
plot.new()

# first open png device...
png(filename = "map_cons_g.png", width = 6,height = 6, units = "in", res = 600)

# ...then set par
par(omi = c(0,0,0,0), mgp = c(0,0,0), mar = c(0,0,0,0), family = "D")
par(mfrow = c(1, 1), cex = 1, cex.lab = 0.75, cex.main = 0.2, cex.axis = 0.2)

plot(c(-75, -35), c(5, -33),  type = "n", axes = FALSE, xlab = "", ylab = "", asp = 1.2)
plot(Brazil, col = cols[Brazil$Cons.g_ri], add = TRUE, border = "black", lwd = 0.5)
dev.off()

关于r - 使用 par 设置 png 绘图设备的绘图边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878217/

相关文章:

r - ggplot2 水平图例元素之间的空间

r - 用 `dplyr`生成多列变量,向量化函数

Java 使用流方法操作列表中的对象

python - x、y 和 z 轴上具有不同数量点数的曲面图

python - 如何将结果值显示在轴框之外

r - 如何替换 R 中日期对象中的天数?

r - 使用 strsplit 分割字符串并为分割的一部分创建一个新向量

值为指针的 C++ Map

python - 计算有多少值归因于 python (3.2) 字典的键

python - 使用循环绘制多个图,然后组合这些图