我偶然发现了ggplot定位的一个简单问题,我将提供一个非常简单的例子,真正的问题要复杂得多,所以我在寻找生殖解决方案,如果可能的话ggplot环境。
names <- c("a","b","c","d")
days <- c(100,50,25,10)
dat <- data.frame(name=rep(names,days),date=as.Date(Sys.Date()-sum(days)+1):Sys.Date(),value=rep(days,days))
ggplot(dat,aes(x = date, group = name)) +
geom_line(aes(y=value,color=name)) +
geom_text(aes(max(date),value,label=value),vjust=0)
我正在寻找的是将文本放在代表max(date)应该完成的组的每一行的末尾。我尝试了各种group = name的可能性,但无法在ggplot中解决这个问题。
答案 0 :(得分:3)
这有帮助吗?我为标签生成了第二个数据集,因为它更容易聚合(并且自己控制它),你只需要绘制一次标签。
library(dplyr)
dat_labels <- dat %>% group_by(name) %>% summarise(
label_position=max(date),
label_value=max(value)
)
ggplot(dat,aes(x = date, group = name)) +
geom_line(aes(y=value,color=name)) +
geom_text(data=dat_labels, aes(x=label_position, y=label_value,label=label_value),vjust=0)