我使用ggh4x
包的facet_grid2()
功能,facetting上的2个变量(一个用于行,一个用于行)。y轴上的值不同,x轴的范围也不同,所以我使用scales="free"
参数。我希望我的每个面显示不同的x轴,所以我使用了参数independent="x"
。有没有一种方法可以让x轴的值对每一行都是独立的,但是在两列之间显示的范围是一致的?
下面是一个可重现的示例来解决该问题:
iris <- iris %>%
mutate(group1 = rep(c("w","x","y","z"), each=20, length.out=nrow(iris)),
group2 = rep(c("A","B"), length.out=nrow(iris)))
ggplot(iris,
aes(x=Sepal.Length,
y=group1)) +
geom_point() +
facet_grid2(Species~group2,
scales = "free",
independent = "x")
字符串
我的理想结果是第一行的x轴显示两列的范围为4.4-5.6,第2行(两列)为5-7,第3行(两列)为5-8。
谢谢你,谢谢
2条答案
按热度按时间yyyllmsg1#
另一种选择是使用
ggh4x::scales_x_facet
或ggh4x::facetted_pos_scales
,这两种方法都允许为每个或一组面板单独设置比例:字符串
x1c 0d1x的数据
EDIT或者不复制代码,可以使用例如
purrr::map
系列函数来创建list
刻度,如@eipi10在他的评论中所建议的:型
的
wvyml7n52#
按行控制x轴范围的一种方法是为每行创建单独的小平面图,然后将它们合并合并。(行变量)。然后我们使用
map
为Species
的每个水平创建一个多面图。在map
中,我们得到x-对于给定的Species
水平,Sepal.Width
的范围,并使用它来设置每个图的x轴限制。然后我们使用patchwork::wrap_plots()
来合并组合图。字符串
x1c 0d1x的数据
创建于2023-12-08带有reprex v2.0.2