2016-09-26 1 views
0

J'ai des problèmes avec ggplot en utilisant des transformations de coordonnées avec une échelle log10. Je souhaite tracer mes données sur un axe log10, mais sans mettre à l'échelle les données elles-mêmes. Cela fonctionne avec sqrt, mais si vous utilisez une coordonnée d'axe de journal, aucune barre ne s'affiche. S'il vous plaît pouvez-vous me dire ce que je manque?ggplot Dodge Bar ne s'affiche pas lors de la conversion de coordonnées log

d <- data.frame(x=factor(c(1,1,2,2)), y=c(1,2,3,4), fill=factor(c(1,2,3,4))) 

#sqrt axis tranformaion works 
ggplot(d, aes(x = x, fill = fill)) + 
    geom_bar(aes(y = y), stat = "identity", position = "dodge") + 
    coord_trans(y = "sqrt") 

#log10 axis tranformaion doesn't work 
ggplot(d, aes(x = x, fill = fill)) + 
    geom_bar(aes(y = y), stat = "identity", position = "dodge") + 
    coord_trans(y = "log10") 

#log10 axis tranformaion works with points rather than bars 
ggplot(d, aes(x = x, fill = fill)) + 
    geom_point(aes(y = y), stat = "identity") + 
    coord_trans(y = "log10") 

Répondre

0

Essayez d'utiliser la fonction scale_y_log10:

ggplot(d, aes(x = x, fill = fill)) + 
    geom_bar(aes(y = y), stat = "identity", position = "dodge") + 
    scale_y_log10()