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.

Problemas con la generación de gráficos de densidad en R utilizando geom_density_2d_filled.

Tengo posiciones x e y y quiero dibujar un mapa de densidad utilizando ggplot, sin embargo, me da el siguiente error:

Error in seq_len(n) : el argumento debe ser coercible a un entero no negativo
Además: Mensajes de advertencia: 1: El cálculo falló en stat_density2d_filled(): las anchuras deben ser estrictamente positivas 2: En min(x, na.rm = na.rm) : no hay argumentos no faltantes para min; devolviendo Inf 3: En max(x, na.rm = na.rm) : no hay argumentos no faltantes para max; devolviendo -Inf 4: En max(f) : no hay argumentos no faltantes para max; devolviendo -Inf

Tanto x como y son numéricos y no hay valores faltantes. Sin embargo, sigo obteniendo el mismo error. El código que estoy utilizando es:

ggplot(Fish, aes(x=xpos, y=ypos)) +
geom_density_2d_filled(aes(fill = ..level..), alpha=0.85, breaks= c(0,10^-5, 10^-4,10^-3,10^-2,10^-1,1),
contour_var = "ndensity") +
scale_fill_brewer(type = "seq",palette = "Spectral", direction = -1)

Este código funciona bien para otros conjuntos de datos en los que tengo posiciones x e y para otros peces. Pero este conjunto de datos está dando errores.

El enlace al archivo CSV con los datos es: Enlace

Cualquier ayuda sería apreciada.

Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el problema puede estar en el parámetro de ancho de banda utilizado en la función geom_density_2d_filled. Una solución para este error es establecer explícitamente los parámetros de ancho de banda a valores mayores que cero. Aquí está el código modificado que establece el ancho de banda en 0.1:

    ggplot(Fish, aes(x=xpos, y=ypos)) + 
      geom_density_2d_filled(aes(fill = ..level..), alpha=0.85, breaks= c(0,10^-5, 10^-4,10^-3,10^-2,10^-1,1),
                             contour_var = "ndensity", bandwidth = 0.1) +
      scale_fill_brewer(type = "seq",palette = "Spectral", direction = -1)
    

    Esto debería resolver el error y deberías poder crear el mapa de densidad utilizando ggplot.

Comments are closed.