我正在尝试为一个需要分面的出版物创建一个绘图。它必须在每个分面上显示相同的x轴,并保持每个y轴度量单位的均匀间距。facet_grid
允许我创建我想要的y度量间距,但是我不能让x轴显示每个面。facet_wrap
允许我在每个面上显示x轴,但是它破坏了y度量间距。每个x轴的值也不同,我需要它们相同。facet_rep_grid
看起来应该是一个解决方案,但它抛出了一个错误“Error in axisgrob$height$arg1:$运算符对于原子向量无效”
使用patchwork
似乎是一个解决方案,但这也会破坏y轴间距,我需要每个网格都完全相同。
我刚才描述的图的可重复的例子:
install.packages("lemon")
library(lemon)
data("mtcars")
df <- mtcars %>%
rownames_to_column(var = "car")
mt <- ggplot(df, aes(mpg, car, colour = factor(cyl))) +
theme(strip.placement = "outside")+
geom_point()
# Good y metric spacing, can't get x-axis to show on each
mt +
facet_grid(vars(cyl), switch = "y", scales = "free", space = "free")
# Incorrect y metric spacing, shows x-axis on each but uses different scales
mt +
facet_wrap(~cyl, scales = "free", ncol=1, switch = "y")
# Throws an error
mt +
facet_rep_grid(vars(cyl), scales = "free"
, switch = "both", space = "free")
facet_grid版本:
facet_wrap版本:
3条答案
按热度按时间u59ebvdq1#
你的最终解决方案对我有效。
如果你仍然得到一个错误,你可以张贴它吗?我不得不重新安装
rlang
和vctrs
包,让它工作。w41d8nur2#
实际上使用
lemon::facet_rep_grid
对我来说很好,但是另一个选项是ggh4x::facet_grid2
,它也允许添加内部轴:sdnqo3pr3#
以下是使用完全不同方法的近似解: