【问题标题】:How to add a legend label in a plot, when there is no data points with that label in the specific plot?当特定图中没有带有该标签的数据点时,如何在图中添加图例标签?
【发布时间】:2014-04-12 04:11:29
【问题描述】:

我制作了一系列图(散点图)的 GIF,其中显示了每年的纬度和经度点,显示物种分布和种群分布。然而,在某些年份,某些物种没有价值(即那一年没有收集到个体)。这会在 GIF 中产生问题,因为图例之间的图例应该是恒定的。

我希望能够在图例中手动包含或插入这些缺失的物种,并相应地使用物种名称和颜色值(即使它们不在显示的图中)。

可重现的例子(虽然我不知道是否有必要):

    #Creating mock longitude and latitude poitns
    a <- c("1","1")
    b <- c("2","2")
    c <- c("3","1")
    d <- c("2","1")
    e <- c("2","3")
    f <- c("3","3")

    x <- rbind(a,b,c,d,e,f)
    #Assigning species to each observation.
    sp <- c("sp1", "sp1", "sp1", "sp1", "sp1", "sp2")
    year <- c(2000, 2000, 2000, 1999, 1999, 1999)

    x2 <- cbind(x, sp, year)

    df <- as.data.frame(x2)
    #Subset the df by year, which I have to do in my original dataset. 
    df99 <- subset(df, year==1999)
    df00 <- subset(df, year==2000)

    g1999 <- ggplot(data=df99, aes(V1, V2, colour=sp)) + geom_point()
    g2000 <- ggplot(data=df00, aes(V1, V2, colour=sp)) + geom_point()

在这种情况下,我想在图例中显示 Sp1 和 Sp2 的标签和颜色。

非常感谢任何帮助!

【问题讨论】:

  • +1 用于发布一个可重现的小示例,并展示您尝试过的代码!

标签: r ggplot2 legend manual


【解决方案1】:

第一种选择是在绘图调用中添加geom_blank 作为第一层。来自?geom_blank:“空白的几何图形什么也没画,但可以是确保不同地块之间通用比例的有用方法。”。这里我们让geom_blank 层使用整个数据集df。因此,即使geom_point 实际绘制的数据仅使用了一部分数据,也会创建一个包含所有物种的图例。

ggplot(data = df, aes(V1, V2, colour = sp)) +
  geom_blank() +
  geom_point(data = df99)

ggplot(data = df, aes(V1, V2, colour = sp)) +
  geom_blank() +
  geom_point(data = df00)

另一种可能性是使用facet_wrap,它将每年的地块与一个共同的比例放在一起。

ggplot(data = df, aes(V1, V2, colour = sp)) +
  geom_point() +
  facet_wrap(~ year)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多