[英]How to add a legend label in a plot, when there is no data points with that label in the specific plot?
我制作了一系列情节(散点图)的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的标签和颜色。
任何帮助是极大的赞赏!
第一种方法是在绘图调用中添加geom_blank
作为第一层。 来自?geom_blank
:“空白的geom什么都没有,但可以成为确保不同地块之间共同尺度的有用方法。” 在这里,我们让geom_blank
层使用整个数据集df。 因此,即使只有一部分数据用于geom_point
进行的实际绘图, 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.