Вам нужно сообщить geom_dl
, что вы хотите показать на своем графике.Код ниже должен просто соответствовать вашим потребностям:
p <- ggplot(d, aes(x=x, y=y, colour=as.factor(z))) +
stat_smooth(inherit.aes=T, se=F, span=0.8, method = "loess", show.legend = F) +
geom_line(colour="grey50") +
scale_x_continuous(limits=c(0,110)) +
geom_dl(label=as.factor(d$z), method="maxvar.points", inherit.aes=T)
Если вам нужен другой текст, а не 0
и 1
, вам просто нужно сделать его на основе d$z
и поставить его вместо as.factor(d$z)
.
Чтобы поместить метки рядом с последней точкой geom_smooth
, а не с последними точками данных, я не смог найти какой-либо метод в geom_dl
для этогоследовательно, придумали обходной путь:
p <- ggplot(d, aes(x=x, y=y, colour=as.factor(z))) +
stat_smooth(inherit.aes=T, aes(label=as.factor(z)), se=F,
span=0.8, method = "loess", show.legend = F) +
geom_line(colour="grey50") +
scale_x_continuous(limits=c(0,110))
library(data.table)
smooth_dat <- setDT(ggplot_build(p)$data[[1]])
smooth_lab <- smooth_dat[smooth_dat[, .I[x == max(x)], by=group]$V1]
p + annotate("text", x = smooth_lab$x, y=smooth_lab$y,
label=smooth_lab$label,colour=smooth_lab$colour,
hjust=-1)