如何在每个面板中保留所有值的情况下创建不同的 x 轴?

How to create different x-axis with keeping all values in each panel?

比方说,我有如下示例的数据,

dat1 <- data.frame(group = c("a", "a","a", "a", "a", "b", "b", "b","b","b","b","b","c","c","c"),
                   subgroup = c(paste0("R", rep(1:5)),paste0("R", rep(1:7)),paste0("R", rep(1:3))),
                   value = c(5,6,0,8,2,3,4,5,2,4,7,0,3,4,0),
                   pp = c("AT","BT","CT","AA","AT","TT","RT","CC","SE","DN","AA","MM","XT","QQ","HH"))

我想添加一些中断作为

dat1 = dat1[dat1$value > 2, ]

我的密码是

library(ggplot2)
pl <- ggplot(dat1, aes(y = pp, x = subgroup)) + 
        geom_point(aes(size=value)) +  
        facet_grid(cols = vars(group), scales="free", space="free")+ 
        ylab("names") +xlab(" ")
pl 

我想查看每个面板的所有列。例如在第一个面板中,应该有五个子组,我在图中只看到三列,但我只想看到所有五列,即使下面的截断或零也是如此。第二个面板有 7 个尺度。切断后,有 6 列,但我想看到所有 7 个比例,即使它为零。

如何修改我的代码或制作这样的情节?

您需要在不降低级别的情况下进行子集化。

dat1 <- data.frame(group = c("a", "a","a", "a", "a", "b", "b", "b","b","b","b","b","c","c","c"),
               subgroup = c(paste0("R", rep(1:5)),paste0("R", rep(1:7)),paste0("R", rep(1:3))),
               value = c(5,6,0,8,2,3,4,5,2,4,7,0,3,4,0),
               pp = c("AT","BT","CT","AA","AT","TT","RT","CC","SE","DN","AA","MM","XT","QQ","HH"))

dat1[dat1$value <= 2, 3] <- NA

pl <- ggplot(dat1, aes(y = pp, x = subgroup)) + 
 geom_point(aes(size=value)) +  
 facet_grid(~group, scales="free_x", space = "free")+ 
 ylab("names") +xlab(" ") +
 scale_size(range = c(3,8))