R 为ggplot2中的每个面设置不同的轴限制,不使用比例=";“免费”;
我想要的一般解决方案是能够独立地为每个方面指定任意轴限制 通过将刻度设置为自由,可获得基本功能。例如:R 为ggplot2中的每个面设置不同的轴限制,不使用比例=";“免费”;,r,ggplot2,R,Ggplot2,我想要的一般解决方案是能够独立地为每个方面指定任意轴限制 通过将刻度设置为自由,可获得基本功能。例如: ggplot(钻石,aes(x=克拉,y=价格))+geom_point()+facet_wrap(~clarity,nrow=4,ncol=2,scales=“free”) 这实际上是一个非常好的特性,但实际上并不总是那么有用。通常我们想要的是在同一轴上有可比较的变量子组。作为一个玩具例子,考虑上面的钻石案例。我们可能希望第一列中的所有面具有相同的轴限制,第二列中的所有面具有相同的轴限制(
ggplot(钻石,aes(x=克拉,y=价格))+geom_point()+facet_wrap(~clarity,nrow=4,ncol=2,scales=“free”)
这实际上是一个非常好的特性,但实际上并不总是那么有用。通常我们想要的是在同一轴上有可比较的变量子组。作为一个玩具例子,考虑上面的钻石案例。我们可能希望第一列中的所有面具有相同的轴限制,第二列中的所有面具有相同的轴限制(但与第一列不同)
是否有一种解决方案可以通过标准ggplot使用来实现这一点。在结束之前,我认为扩展@Axeman的建议是很重要的:直接使用
facet\u wrap
可能无法做到这一点,但是这种行为可以通过将您想要的组分块并使用cowplot
将它们缝合在一起来实现。在这里,我将质量分为“低”和“高”,但分组是任意的,可以是任何您想要的。可能希望稍微弄乱样式,但出于此目的,cowplot
中的默认值是可以接受的:
library(cowplot)
lowQ <-
ggplot(diamonds %>%
filter(as.numeric(clarity) <= 4)
, aes(x = carat
, y = price)) +
geom_point() +
facet_wrap(~clarity
, nrow = 1)
hiQ <-
ggplot(diamonds %>%
filter(as.numeric(clarity) > 4)
, aes(x = carat
, y = price)) +
geom_point() +
facet_wrap(~clarity
, nrow = 1)
plot_grid(lowQ, hiQ, nrow = 2)
库(cowplot)
低质量%
过滤器(如数字(清晰度)4)
,aes(x=克拉)
,y=价格)+
几何点()+
面_包裹(~0)
,nrow=1)
绘图网格(低Q、高Q、nrow=2)
我不知道有什么(缺少大量手动网格代码修补),但这里有一些。没有标准解决方案。我可能会分别生成这两个列,并使用
cowplot
将它们粘在一起。在我看来,这将以与labeller
相同的方式编程。请求按列操作类似于.rows
和.cols
页边距规范。投票关闭实际上是一个功能请求,因此对那些人来说不是正确的地方。我投票关闭这个问题是因为它确实是一个功能请求,以前已经提出过(由@joran研究),被认为是有效的,但正在等待实施。我建议不要关闭这个问题。问题的答案是,标准ggplot中不存在解决方案,但有一些现成的解决方案。此外,这一问题在这里比在其他地方更为透明