Trazado con ggplot2: “Error: valor discreto proporcionado a escala continua” en el eje y categórico

El siguiente código de trazado proporciona Error: Discrete value supplied to continuous scale

¿Qué pasa con este código? Funciona bien hasta que bash cambiar la escala para que el error esté allí … Traté de encontrar soluciones de un problema similar pero no pude.

Este es un head de mis datos:

 > dput(head(df)) structure(list(`10` = c(0, 0, 0, 0, 0, 0), `33.95` = c(0, 0, 0, 0, 0, 0), `58.66` = c(0, 0, 0, 0, 0, 0), `84.42` = c(0, 0, 0, 0, 0, 0), `110.21` = c(0, 0, 0, 0, 0, 0), `134.16` = c(0, 0, 0, 0, 0, 0), `164.69` = c(0, 0, 0, 0, 0, 0), `199.1` = c(0, 0, 0, 0, 0, 0), `234.35` = c(0, 0, 0, 0, 0, 0), `257.19` = c(0, 0, 0, 0, 0, 0), `361.84` = c(0, 0, 0, 0, 0, 0), `432.74` = c(0, 0, 0, 0, 0, 0), `506.34` = c(1, 0, 0, 0, 0, 0), `581.46` = c(0, 0, 0, 0, 0, 0), `651.71` = c(0, 0, 0, 0, 0, 0), `732.59` = c(0, 0, 0, 0, 0, 1), `817.56` = c(0, 0, 0, 1, 0, 0), `896.24` = c(0, 0, 0, 0, 0, 0), `971.77` = c(0, 1, 1, 1, 0, 1), `1038.91` = c(0, 0, 0, 0, 0, 0), MW = c(3.9, 6.4, 7.4, 8.1, 9, 9.4)), .Names = c("10", "33.95", "58.66", "84.42", "110.21", "134.16", "164.69", "199.1", "234.35", "257.19", "361.84", "432.74", "506.34", "581.46", "651.71", "732.59", "817.56", "896.24", "971.77", "1038.91", "MW"), row.names = c("Merc", "Peug", "Fera", "Fiat", "Opel", "Volv" ), class = "data.frame") 

El código de trazado:

 ## Plotting meltDF = melt(df, id.vars = 'MW') ggplot(meltDF[meltDF$value == 1,]) + geom_point(aes(x = MW, y = variable)) + scale_x_continuous(limits=c(0, 1200), breaks=c(0, 400, 800, 1200)) + scale_y_continuous(limits=c(0, 1200), breaks=c(0, 400, 800, 1200)) 

Así es como se veía la ttwig antes de agregar la escala:

Trama

Como se menciona en los comentarios, no puede haber una escala continua en la variable del tipo de factor . Puede cambiar el factor a numeric siguiente manera, justo después de definir la variable meltDF .

 meltDF$variable=as.numeric(levels(meltDF$variable))[meltDF$variable] 

Luego, ejecuta el comando ggplot

  ggplot(meltDF[meltDF$value == 1,]) + geom_point(aes(x = MW, y = variable)) + scale_x_continuous(limits=c(0, 1200), breaks=c(0, 400, 800, 1200)) + scale_y_continuous(limits=c(0, 1200), breaks=c(0, 400, 800, 1200)) 

Y tendrás tu tabla.

Espero que esto ayude

si x es numérico, agregue scale_x_continuous() ; si x es caracter / factor, entonces agregue scale_x_discrete() . Esto podría resolver su problema.

En mi caso, debe convertir la columna (cree que esta columna es numérica, pero en realidad no) a numeric

 geom_segment(data=tmpp, aes(x=start_pos, y=lib.complexity, xend=end_pos, yend=lib.complexity) ) # to geom_segment(data=tmpp, aes(x=as.numeric(start_pos), y=as.numeric(lib.complexity), xend=as.numeric(end_pos), yend=as.numeric(lib.complexity)) ) 
Intereting Posts