es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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.

Comments are closed.