Удалить пустой участок в ggplot2 - PullRequest
1 голос
/ 21 марта 2020

Еще одна проблема, с которой я столкнулся, но безуспешно ... У меня есть следующий код:

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")

, который выдает следующий график:

enter image description here

Я пытаюсь удалить пустые части на левой панели (с x = 10) и на правой панели (под x = 50). Я ввел опцию scales=("free"), которая прекрасно работает без опции geom_rug(), но мне нужно оставить красные галочки geom_rug(). Как я могу вырезать пустые части каждой панели? Я попытался изучить вариант element.blank(), но безуспешно ...

1 Ответ

4 голосов
/ 21 марта 2020

В ggplot2 действительно трудно сделать прерывистую ось.

Поскольку, как я понимаю, ваш вопрос, похоже, у вас есть некоторые значения коврика для пола = 0 и для пола = 1. Если вы добавите дополнительный столбец gender к вашему df_rug, вы сможете отделить rug в функции gender, как вы делаете для df, используя facet_grid:

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")

enter image description here

это ответит на ваш вопрос?

...