ggplot2 0.9.1: Logarithmique de l'axe y de l'échelle avec barchart
Je suis en train de convertir l'axe des y d'un bar-chart à une échelle logarithmique (I. e. logarithmique de la distance entre chaque tiques).
Certaines données factices:
DF <- data.frame(num=c(1,2,3),label=c("a","b","c"))
J'ai essayé les exemples suivants:
p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar() +
scale_y_continuous(trans = 'log10',
breaks=trans_breaks("log10",function(x) 10^x),
labels=trans_format("log10",math_format(10^.x)))
Cela ne journal transforme les étiquettes, mais pas les tiques:
p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar() + coord_trans(y="log10")
Ce n'est pas l'intrigue n'importe quoi:
p <- ggplot(data=DF,aes(x=label,y=num),y="log")
Pas de chance, soit
J'ai aussi lu le 0.9 guide de transition , mais cela ne semble pas fonctionner non plus.
EDIT:
J'ai oublié d'inclure un exemple, j'ai essayé:
p <- ggplot(data=DF,aes(x=étiquette,y=num)) + geom_bar() + scale_y_log10()
Qui produit le message d'avertissement suivant:
Message d'avertissement:
Dans la jolie(trans(x), n, ...) : NaNs produit
- À l'aide d'un journal à l'échelle d'un graphique à barres est une mauvaise idée, car la barre de mesurer la distance à partir de zéro. Utiliser un point de la parcelle à la place. perceptualedge.com/articles/b-eye/dot_plots.pdf
- J'ai essayé d'utiliser un point de l'intrigue, et il a travaillé avec les données factices. Mais quand je suis passé sur des données réelles, qui va de 20865 à 127135230, le nom de l'axe y affiche seulement 10^5
- Avez-vous essayer une dot plot avec un logarithmique échelle y? Il devrait vous donner plus d'étiquettes d'axe, avec ce genre de plage de données. Si non, vous pouvez spécifier manuellement les
labels
arg dansscale_y_log10
.
Vous devez vous connecter pour publier un commentaire.
si vous voulez faire un journal de 10 échelle
sessionInfo()
. Vous assurer que vous n'avez pas de NAs il?geom_bar(stat='identity')
. Vous avez oublié lestat='identity'
dans le code ci-dessus.p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar(stat='identity') + scale_y_log10()