【发布时间】:2016-10-16 17:10:05
【问题描述】:
我希望在 R 中为一列的每一行分配一个自定义宽度,分面包裹图。(我知道这完全是非标准的。)
使用grid.arrange,我可以使用以下 sn-p 为 facet-wrapped like plot 的每一行分配一个唯一的高度:
group1 <- seq(1, 10, 2)
group2 <- seq(1, 20, 3)
x = c(group1, group2)
mydf <- data.frame (X =x , Y = rnorm (length (x),5,1),
groups = c(rep(1, length (group1)), rep(2, length(group2))))
plot1 <- ggplot(mydf, aes(X, Y)) + geom_point()
plot2 <- ggplot(mydf, aes(X, Y)) + geom_point()
grid.arrange(plot1, plot2, heights=c(1,2))
上面的代码给绘图的每一行一个唯一的高度:
我想知道是否可以为绘图的每一行分配一个唯一的 width,而不是为每一行分配一个唯一的高度。任何 ggplot2 扩展都可以做到这一点吗?
【问题讨论】:
-
您打算如何处理这些宽度?您想在每一行上添加更多图还是出于视觉目的?一个想法可能是为每个图添加边距。类似于:
plot1 <- ggplot(mydf, aes(X, Y)) + geom_point() +theme( plot.margin = unit(c(1,10,1,1), "lines"))其中plot.margin中的10将是您的右边距,可以被认为是您的宽度。 -
感谢@MikeyMike,本质上目标是让每个方面的 x 轴有 n 个单位,其中 n 是该方面的观察次数。每个单位都应该由一致的空间量表示,因此可视化更多观察的小平面应该具有物理上更长的 x 轴。如果我将每个面的宽度设置为相对于最大长度的长度的函数,则边距技巧可能会起作用!我要试试这个...
-
@MikeyMike 你知道在哪里可以找到关于
plot.margin可用单位的文档吗?我祈祷有一些类似于百分比的东西,但担心不会有。 -
在
plot.margin的文档方面,不幸的是我不知道。但是,如果您查看?grid::unit,您可以查看单元文档。这表明您可以使用npc单位将宽度设置为页面宽度的函数。所以npc = 0.5表示宽度将是0.5页面宽度。这是你要找的吗? -
我相信这样的事情会起作用:
plot1 <- ggplot(mydf, aes(X, Y)) + geom_point() +theme( plot.margin = unit(c(0.01,0.5,0.01,0.01), "npc"))其中0.5大致等于您的百分比。
标签: r ggplot2 plot visualization r-grid