ggplot r:如何突出显示一年中的数据

时间:2019-08-11 10:20:20

标签: r ggplot2

数据:每天记录一次身高

我想绘制植物的高度(植物A1-Z50) 在单个图中,我想突出显示当前年份。

所以我为当年(2018年)制作了每个植物的子集和一个子集

现在我需要一个总记录和2018年突出显示数据的图

 dput(Plant)
structure(list(Name = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L, 3L), .Label = c("Plant A1", "Plant B1", "Plant C1"), class = "factor"), 
    Date = structure(c(1L, 4L, 5L, 7L, 1L, 4L, 6L, 1L, 2L, 3L
    ), .Label = c("    2001-01-01", "    2001-01-02", "    2001-01-03", 
    "    2002-01-01", "    2002-02-01", "    2019-01-01", "    2019-12-31"
    ), class = "factor"), Height_cm = c(91, 106.1, 107.4, 145.9, 
    169.1, 192.1, 217.4, 139.8, 140.3, 140.3)), .Names = c("Name", 
"Date", "Height_cm"), class = "data.frame", row.names = c(NA, 
-10L))

Plant_A1 <- filter(Plant, Name == "Plant A1")
Current_Year <- as.numeric("2018")
Plant_A1_Subset <- filter(Plant_A1, format(Plant_A1$Date, '%Y') == Current_Year)


ggplot(data=Plant_A1,aes(x=Plant_A1$Date, y=Plant_A1$Heigth)) + 
  geom_point() + 
  geom_smooth(method="loes", level=0.95, span=1/2, color="red") +
  labs(x="Data", y="Height cm")

现在我不知道如何将我的2018年新子集(Plant_A1_Subset)放入此图中。

1 个答案:

答案 0 :(得分:0)

如前所述,此问题与this question中的答案重复。

这就是说,这可能是处理问题的最常用方法。

ggplot2中,将来的调用将继承传递到aes函数的ggplot(aes(...))中的所有参数。因此,除非将来手动覆盖参数,否则该图将始终在以后的ggplot函数中使用这些参数。不过,我们可以通过在aes的{​​{1}}中添加一个额外的参数来解决您的问题。下面,我说明了一种实现您可能正在寻找的简单方法。

在单个调用中指定aes参数

第一种方法可能是最直观的。 geom_point控制绘制的参数。因此,如果您想为某些点添加颜色,一种方法是让aesaes参数是单独的。

geom_point

请注意,我已经使用了geom_smooth参数的继承。简而言之,library(ggplot2) library(lubridate) #for month(), year(), day() functions current_year <- 2018 ggplot(data = Plant_A1, aes(x = Date, y = Heigth)) + #Note here, colour set in geom_point geom_point(aes(col = ifelse(year(Date) == current_year, "Yes", "No"))) + geom_smooth(method="loess", level=0.95, span=1/2, color="red") + labs(x="Data", y="Height cm", col = "Current year?") #Specify legend title for colour 将检查aes中的名称,如果可以找到它,则将其用作变量。因此,无需指定aes