从由两个饼图组成的图中消除死亡 space

Eliminating dead space from a plot consisting of two pie charts

我有这张图,我想将其另存为 PDF。

pdf(file="pie_charts.pdf", width=8, height=5, onefile=F)
layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(4, 1))
par(mar=c(0,0,0,0), xpd=TRUE)
pie(c(1,9),col=c("black","white"))
pie(c(1,3),col=c("black","white"))
plot.new()
legend(x="center", ncol=2,legend=c("Black","Whtie"),fill=c("black","white"), bty = "n",cex=1.3)
dev.off()

这就是我得到的

它看起来不错,但我想尽可能多地消除单个饼图之间以及它们与图例之间的空白 space。有什么建议吗?

对于 layout(),我认为您在更改边距以将饼图压缩在一起方面可能有点受限。

这不是一个优雅的解决方案,但它确实有效。我进入 pie() 函数并修改了 xlim 参数。这是我唯一的改变。

换句话说,pie在它的函数中有这个:

xlim <- ylim <- c(-1, 1)

更改 xlim 以向左或向右移动饼图。

我做了 mypieleft()mypieright()

mypieleft<-function(blah blah){
[untouched code from pie]
    #  xlim <- ylim <- c(-1, 1)
    xlim <- c(-1.20, 0.80)
    ylim <- c(-1, 1)
[untouched code from pie]
}

mypieright<-function(blah blah){
[untouched code from pie]
    #  xlim <- ylim <- c(-1, 1)
    xlim <- c(-0.75, 1.25)
    ylim <- c(-1, 1)
[untouched code from pie]
}

然后稍微更改您的代码:

layout(matrix(c(1,2,3,3), ncol=2, byrow=TRUE), heights=c(4, 1))
par(oma=c(0,0,0,0), xpd=TRUE)
mypieleft(c(1,9),col=c("black","white"))
mypieright(c(1,3),col=c("black","white"))
plot.new()
legend(x="center", ncol=2,legend=c("Black","Whtie"),fill=c("black","white"), bty = "n",cex=1.3)

我得到了这张图片。

只需增加馅饼的radius

layout(matrix(c(1, 2, 3, 3), ncol=2, byrow=TRUE), heights=c(4, 1))
par(mar=c(0, 1, 0, 0)) # increase left margin to accommodate text
pie(c(1, 9), col=c("black","white"), radius=1)
par(mar=c(0, 0, 0, 1)) # increase right margin to accommodate text
pie(c(1, 3), col=c("black", "white"), radius=1)
plot.new()
legend(x="center", ncol=2, legend=c("Black", "White"), 
       fill=c("black", "white"), bty="n", cex=1.3)

请参阅 ?pie 处的 radius 参数。