0

我有一个应该很容易解决的问题,但我没有找到任何直接适用于我的情况的答案。

我正在尝试使用 geom_point 创建一个图,其中显示的点是来自字符向量的过滤值。y 是连续数字,x 是日期,fill 是字符向量。

这是我的示例数据:

year    month   day attempt n_test
2019    6   22  1   NA
2019    7   13  2   n
2019    8   3   3   n
2019    8   20  4   n
2019    9   3   5   n
2019    9   4   6   n
2019    9   8   7   n
2019    9   11  8   p
2019    9   17  9   n
2019    10  3   10  n
2019    10  3   11  n
2019    10  11  12  c
2019    10  22  13  n
2019    10  25  14  n
2019    10  28  15  p
2019    11  6   16  c
2019    11  9   17  n
2019    11  25  18  n
2019    12  4   19  n
2019    12  8   20  n
2019    12  14  21  p
2019    12  17  22  n
2019    12  20  23  n

这称为“ntest.csv”。

这是我的代码:

ntest <- read.csv('ntest.csv', header = TRUE)
n_date <- ymd(paste(ntest$year, ntest$month, ntest$day, sep="-"))
ggplot(ntest, aes(n_date, y=attempt)) +
    geom_point(aes(colour = n_test), size = 3.5) +
    labs(x=NULL) +
    theme(legend.position="none",
          axis.text.x = element_text(color = "black", size = 10, angle=45),
          axis.text.y = element_text(color = "black", size = 10),
          axis.title.y = element_text(size = 13, vjust = 2)) +
    scale_x_date(date_breaks = "months" , date_labels = "%b-%y")

这给出了附图。

测试图

我只想在我的 geom_point 图中显示 n_test 等于“p”的行。所以同样的图表,只有蓝点。我试过使用

ntest %>% 
filter(n_test=="p")

在ggplot之前,但这会导致:

“错误:美学必须是长度 1 或与数据 (3) 相同:x”

任何帮助将不胜感激。

4

1 回答 1

2

这里的问题是您没有制作n_date数据框的一部分,因此在您过滤数据框时它不会被过滤,因此与它的长度不同。解决方案只是将其创建为数据框中的列:

ntest$n_date <- lubridate::ymd(paste(ntest$year, ntest$month, ntest$day, sep="-"))

现在您可以应用您的过滤器并且您的绘图将起作用(请注意,这些点是红色的,因为现在只有一个颜色组):

ggplot(ntest %>% filter(n_test == "p"), aes(n_date, y=attempt)) +
    geom_point(aes(colour = n_test), size = 3.5) +
    labs(x=NULL) +
    theme(legend.position="none",
          axis.text.x = element_text(color = "black", size = 10, angle=45),
          axis.text.y = element_text(color = "black", size = 10),
          axis.title.y = element_text(size = 13, vjust = 2)) +
    scale_x_date(date_breaks = "months" , date_labels = "%b-%y")

在此处输入图像描述

于 2020-09-14T13:47:44.837 回答