Не удается добавить элементы в легенду (iNEXT / ggplot2) - PullRequest
1 голос
/ 08 апреля 2020

Я сделал кривые разрежения, используя пакет iNEXT в R, и добавил две горизонтальные линии для асимптот обеих кривых вручную (пакет не делает этого, поэтому я попытался использовать функции ggplot, и, похоже, это сработало), кроме того Я расширил ось X / Y. К сожалению, мои навыки, по-видимому, слишком ограничены, чтобы понять, как добавить асимптоты в легенду графика под меткой «Асимптоты: север и юг» (или что-то в этом роде). Я был бы очень признателен за помощь. Я добавил свой код ниже и график в виде картинки, если чего-то не хватает, дайте мне знать!

С наилучшими пожеланиями и будьте здоровы!

### Rarefaction with iNEXT -> Species X Visits incidence_frequency data

# List for both regions
incidence_freq_north <- c(7,2,0,0,4,0,2,0,2,1,0,0,0,6,0,1,1,0,0,0)
incidence_freq_south <- c(23,0,0,1,9,2,0,4,1,1,1,2,6,1,4,1,0,8,2,7,1)

list_rarefaction_freq = list(North = incidence_freq_north, South = incidence_freq_south)

## create output file
out_freq <- iNEXT(list_rarefaction_freq, q=0, datatype="incidence_freq", endpoint=NULL,
             size=NULL, knots=400, se=TRUE, conf=0.95, nboot=400)

# Sample-size-based R/E curves, separating plots by "order"
ggiNEXT(out_freq, type=1, facet.var="order") +
  ylim(c(0,40)) + xlim(c(0,70)) + 
  theme_bw(base_size = 18) + 
  geom_hline(yintercept=24, linetype="solid", color = "darkslategray2") + 
  geom_hline(yintercept=10, linetype="solid", color = "coral1")

График как изображение

1 Ответ

1 голос
/ 08 апреля 2020

Я думаю, что одним из возможных решений будет нарисовать ваш график ggiNEXT самостоятельно (здесь они предоставляют учебник для этого: https://cran.r-project.org/web/packages/iNEXT/vignettes/Introduction.html)

Затем вы можете добавить новый фрейм данных, соответствующий значениям асимптотики, и используйте функцию new_color_scale из пакета ggnewscale, чтобы добавить новую цветовую шкалу на ваш график:

df <- fortify(out_freq, type =1)

df.point <- df[which(df$method=="observed"),]
df.line <- df[which(df$method!="observed"),]
df.line$method <- factor(df.line$method, 
                         c("interpolated", "extrapolated"),
                         c("interpolation", "extrapolation"))

df.asympote <- data.frame(y = c(24,10),
                          Asymptote = c("North","South"))


library(ggnewscale)

ggplot(df, aes(x=x, y=y, colour=site)) + 
  geom_point(aes(shape=site), size=5, data=df.point) +
  geom_line(aes(linetype=method), lwd=1.5, data=df.line) +
  geom_ribbon(aes(ymin=y.lwr, ymax=y.upr,
                  fill=site, colour=NULL), alpha=0.2) +
  labs(x="Number of individuals", y="Species diversity") +
  scale_color_discrete(name = "Site")+
  scale_shape_discrete(name = "Site")+
  scale_fill_discrete(name = "Site")+
  scale_linetype_discrete(name = "Method")+
  theme_bw(base_size = 18)+
  new_scale_color()+
  geom_hline(data = df.asympote, aes(yintercept = y, color = Asymptote))

enter image description here

Это отвечает на ваш вопрос?

...