在ggplot2中,如何按比例设置不同大小的x轴刻度?

46
以下是一个情境:
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))))

ggplot(mydf, aes(X, Y, group= groups)) + geom_point()+ facet_grid (.~ group)

以下图中,不同的方面被 x 轴限制所缩放:

 ggplot(mydf, aes(X, Y, group= groups)) + geom_point()+ 
   facet_grid (.~ group, scales = "free_x")

由于x轴的总宽度具有意义,我希望产生不仅在不同比例上不同的外观,而且宽度也应不同。 因此,期望第一个分面的宽度应为第二个的一半。

输入图像描述


1
顺便提一下,我不能运行你的例子。我建议了一些编辑更改,但都被拒绝了。在调用 facet.grid() 函数时,我使用了 . ~ groups 替代了 . ~ group。此外,在美学语句中的 group = groups 是不必要的。 - Sandy Muspratt
1个回答

70
如果我理解正确的话,space = "free_x" 可以在 facet_grid 中实现你想要的效果。据我所知,facet_wrap 从来没有支持过 space 参数,但是许多 facet_wrap 命令可以转换为 facet_grid 命令。
library(ggplot2)

ggplot(mydf, aes(X, Y)) + geom_point()+ 
facet_grid (.~ groups, scales = "free_x", space = "free_x")

在此输入图片描述

如果您想要在x轴上获得相同样式的标签:

ggplot(mydf, aes(X, Y)) + geom_point()+ 
 scale_x_continuous(breaks = seq(0,20,2)) +
 facet_grid (.~ groups, scales = "free_x", space = "free_x")

在此输入图片描述


7
space 参数仅适用于 facet_grid。对于 facet_wrap,有哪些选项可供选择?请问应该怎么做? - Paul 'Joey' McMurdie
抱歉,我删除了关于“空格”的评论,因为我发现未识别参数错误是特定于“facet_wrap”的。 - Paul 'Joey' McMurdie
1
据我所知,“facet-wrap”从未支持过“space”参数,但是许多“facet_wrap”命令可以转换为“facet-grid”命令。如果您有一个无法实现此目的的情节图,请提出一个新问题可能会更好。 - Sandy Muspratt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接