R用geom_地毯反转ggplot中的小线条

R用geom_地毯反转ggplot中的小线条,r,ggplot2,R,Ggplot2,我有一个数据框,有两列:date和var1。 现在我想在ggplot中绘制这两个变量,并使用geom_rug()添加小行 但在本例中,小行表示date,而不是var1。(var1只有10个值,但有15个小行) 有人能帮我一下吗,如何反转geom\u rug-元素并避免这个问题 在df$var和df$date中有15行。在前者中,5个是NA 一种方法是定义一个有限的数据集,其中只包含绘制内容的相关信息(而不是NAs)。这应提交给geom\u rug。使用complete.cases我们可以省略数据

我有一个数据框,有两列:date和var1。 现在我想在ggplot中绘制这两个变量,并使用
geom_rug()
添加小行

但在本例中,小行表示
date
,而不是
var1
。(
var1
只有10个值,但有15个小行) 有人能帮我一下吗,如何反转
geom\u rug
-元素并避免这个问题


df$var
df$date
中有15行。在前者中,5个是
NA

一种方法是定义一个有限的数据集,其中只包含绘制内容的相关信息(而不是
NA
s)。这应提交给
geom\u rug
。使用
complete.cases
我们可以省略数据集中带有
NA
s的行

您可以使用以下代码来实现所需的绘图

library(ggplot2)
library(tibble)
library(dplyr)

df %>% ggplot(aes(x = date, y = var1)) +
  geom_point() +
  geom_rug(data = df[complete.cases(df), ] ,    ## selected date: not NA
    sides = "lt",
    outside = TRUE) +
  coord_cartesian(clip = "off")


请让我知道这是否是您想要的。

如果您想在打印时删除所有带有NA值的案例,另一个选项是使用ggplot2
remove_missing()
函数:

df %>% ggplot(data = remove_missing(.), mapping = aes(x=date,y=var1))+
  geom_point()+
  geom_rug(sides = "t",outside = T) +
  coord_cartesian(clip = "off")

var1
正在映射到y轴,因此除非您想将其映射到x轴,否则只能在绘图的左侧或右侧放置地毯标记。谢谢您的回答。我已经有了自己的解决方案。但是你的方法要好一点。也非常感谢你。
library(ggplot2)
library(tibble)
library(dplyr)

df %>% ggplot(aes(x = date, y = var1)) +
  geom_point() +
  geom_rug(data = df[complete.cases(df), ] ,    ## selected date: not NA
    sides = "lt",
    outside = TRUE) +
  coord_cartesian(clip = "off")
df %>% ggplot(data = remove_missing(.), mapping = aes(x=date,y=var1))+
  geom_point()+
  geom_rug(sides = "t",outside = T) +
  coord_cartesian(clip = "off")