Diagrama ternario utilizando un vector como densidad.
Tengo un conjunto de datos como este:
DENSE<-runif(10, min=0, max=100)
CROP<-runif(10, min=0, max=100)
WILD<-runif(10, min=0, max=100)
BetaDiv<-runif(10, min=0, max=1)
df<-data.frame(DENSE, CROP, WILD, BetaDiv)
Utilizo este código para hacer un gráfico ternario simple:
ggtern(df[ordered(-df$BetaDiv),],aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+ scale_color_viridis_c(direction = -1)+
stat_density_tern(geom = 'polygon',
n = 100,
aes(fill = ..level..,
alpha = ..level..))
Sin embargo, necesito que la densidad sea dada por la variable BetaDiv. Es decir, que la densidad me muestre dónde están concentrados los valores de BetaDiv.
Gracias a todos.
RS.
davy.ai
Para alterar el gráfico de densidad y mostrar la concentración basada en la variable BetaDiv, podemos agregar el argumento ‘weight’ a ‘stat_density_tern’. Esto usará los valores de la columna BetaDiv como pesos para el cálculo de densidad.
El código actualizado se vería así:
{r}
ggtern(df[ordered(-df$BetaDiv),],aes(DENSE,CROP,WILD))+
geom_point(alpha=0.8, aes(color=BetaDiv), size=3)+ scale_color_viridis_c(direction = -1)+
stat_density_tern(geom = 'polygon',
n = 100,
aes(fill = ..level..,
alpha = ..level..),
weight = BetaDiv)
Esto resultará en un gráfico de densidad que muestra dónde se concentran más los valores más altos de BetaDiv.