Representación de la función ordiellipse de un paquete vegano en un gráfico NMDS creado en ggplot2

En lugar de la función de trama normal que estoy usandoggplot2 para crear gráficos NMDS. Me gustaría mostrar grupos en la gráfica NMDS usando la funciónordiellipse() desde elvegan paquete.

Datos de ejemplo:

library(vegan)
library(ggplot2)
data(dune)
# calculate distance for NMDS
sol <- metaMDS(dune)
# Create meta data for grouping
MyMeta = data.frame(
  sites = c(2,13,4,16,6,1,8,5,17,15,10,11,9,18,3,20,14,19,12,7),
  amt = c("hi", "hi", "hi", "md", "lo", "hi", "hi", "lo", "md", "md", "lo", 
          "lo", "hi", "lo", "hi", "md", "md", "lo", "hi", "lo"),
  row.names = "sites")
# plot NMDS using basic plot function and color points by "amt" from MyMeta
plot(sol$points, col = MyMeta$amt)
# draw dispersion ellipses around data points
ordiellipse(sol, MyMeta$amt, display = "sites", kind = "sd", label = T)

# same in ggplot2
NMDS = data.frame(MDS1 = sol$points[,1], MDS2 = sol$points[,2])
ggplot(data = NMDS, aes(MDS1, MDS2)) + 
  geom_point(aes(data = MyMeta, color = MyMeta$amt))

¿Cómo puedo agregar ordiellipse a la trama NMDS creada conggplot2?

La respuesta de Didzis Elferts a continuación funciona muy bien. ¡Gracias! Sin embargo, ahora estoy interesado en trazar el siguiente ordiellipse en el gráfico NMDS creado conggplot2:

ordiellipse(sol, MyMeta$amt, display = "sites", kind = "se", conf = 0.95, label = T)

Desafortunadamente, no entiendo lo suficiente sobre cómoveganCovEllipse La función funciona para poder ajustar el script yo mismo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta