删除 ggplot2 中的空白图

Remove blank plot in ggplot2

我正在处理的另一个挑战,但没有成功...我有以下代码:

x<-c(seq(1,10,0.5),seq(50,60,0.5))
y<-runif(40)
df<-data.frame(x,y)
df$gender<-c(rep(0,19),rep(1,21))
r<-c(runif(50,0,10),runif(20,50,60))
df_rug<-data.frame(r)
library(ggplot2)
ggplot(df,aes(x,y))+geom_line()+
  geom_rug(data = df_rug, aes(x = r, y = Inf), color = 'red', sides = 'b')+
  facet_grid(.~gender,scales = "free")

产生以下情节:

我正在尝试删除左侧面板(从 x=10 开始)和右侧面板(在 x=50 下)的空白部分。我引入了 scales=("free") 选项,它在没有 geom_rug() 选项的情况下也能完美运行,但我需要保留 geom_rug() 的红色勾号。如何切割每个面板的空白部分?我尝试探索 element.blank() 选项,但没有成功...

ggplot2中,制作不连续的轴真的很难。

因为,我理解你的问题,你似乎有一些 gender = 0 和 gender = 1 的 rug 值。如果你在 df_rug 中添加一个额外的列 gender,你将能够像使用 facet_grid:

df 所做的那样,在 gender 的函数中分离 rug
df_rug<-data.frame(r, gender = c(rep(0,50),rep(1,20)))

library(ggplot2)
ggplot(df,aes(x,y))+geom_line()+
  geom_rug(data = df_rug, aes(x = r, y = Inf), color = 'red', sides = 'b')+
  facet_grid(.~gender,scales = "free")

它是否回答了您的问题?