我想在not_analyzed
输出中的同一图中绘制网格和基础图。我看到如何在几个地方添加网格加基数,包括:Combining grid.table and base package plots in R figure和R put together traditional plot and ggplot2
我还想使用比例或相对宽度来控制绘图的宽度。我以为我用下面的代码得到它,我试图输出到pdf然后它在绘图之前打印一个空白页。如何让它不绘制空白页?我没有嫁给任何一个软件包,我希望答案可以推广(简单就是加分;我觉得下面的代码可以简化)。
pdf
情节看起来像:
答案 0 :(得分:4)
你可能会对gridGraphics包有更好的运气,虽然事情也不是很顺利,
library(gridGraphics)
grab_grob <- function(){
grid.echo(newpage=TRUE)
grid.grab()
}
par(mar=c(4,6,1,1)) # for some reason need lots of space
plot(1:10)
bg <- grab_grob()
p <- ggplot(mtcars, aes(mpg, hp)) + geom_point()
ggsave("test.pdf", gridExtra::arrangeGrob(bg, p, widths = c(2,1)))
答案 1 :(得分:2)
这是一种删除@baptiste指出问题的gridBase::gridFIG
的方法。我伪造了宽度。
library(ggplot2); library(grid); library(gridBase)
pdf("test.pdf")
widths <- c(.335, .665)
widths <- 100*round(widths/sum(widths), 2)
layout(matrix(c(rep(1, widths[1]), rep(2, widths[2])), nrow = 1, byrow = TRUE))
#Draw base plot
plot.new()
graphics::par(mar=c(1, 1, 1, 1), new = TRUE)
plot(1:10)
#Draw ggplot
plot.new()
vps <- baseViewports()
print( ggplot(mtcars, aes(mpg, hp)) + geom_point(), vp = vpStack(vps$figure,vps$plot))
dev.off()