web-dev-qa-db-fra.com

Réorganisation des barres dans geom_bar ggplot2

J'essaie de créer un diagramme à barres dans lequel le tracé est ordonné du miRNA au plus élevé value au miRNA au plus bas. Pourquoi mon code ne fonctionne pas?

> head(corr.m)

        miRNA         variable value
1    mmu-miR-532-3p      pos     7
2    mmu-miR-1983        pos    75
3    mmu-miR-301a-3p     pos    70
4    mmu-miR-96-5p       pos     5
5    mmu-miR-139-5p      pos    10
6    mmu-miR-5097        pos    47

ggplot(corr.m, aes(x=reorder(miRNA, value), y=value, fill=variable)) + 
  geom_bar(stat="identity")
96
user3741035

Votre code fonctionne bien, sauf que le barplot est ordonné du plus bas au plus haut. Lorsque vous voulez commander les barres de haut en bas, vous devez ajouter un signe - avant value:

ggplot(corr.m, aes(x = reorder(miRNA, -value), y = value, fill = variable)) + 
  geom_bar(stat = "identity")

qui donne:

enter image description here


Données utilisées:

corr.m <- structure(list(miRNA = structure(c(5L, 2L, 3L, 6L, 1L, 4L), .Label = c("mmu-miR-139-5p", "mmu-miR-1983", "mmu-miR-301a-3p", "mmu-miR-5097", "mmu-miR-532-3p", "mmu-miR-96-5p"), class = "factor"),
                         variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "pos", class = "factor"),
                         value = c(7L, 75L, 70L, 5L, 10L, 47L)),
                    class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))
181
Jaap

Vous pouvez réorganiser les variables le long de l'axe des x à l'aide de la fonction reorder(). Cependant, parfois, ggplot n'écoute pas pour réorganiser. Cela est généralement dû au fait que les couches supplémentaires du tracé sont ajoutées dans le mauvais ordre. Si vous avez un tracé complexe et que reorder () n'affecte pas le résultat, essayez de supprimer ou de désactiver temporairement les autres fonctions, puis de les rajouter un par un.

ggplot(aes(x=reorder(myx, -myy), y=myy), data=mydf) + geom_bar(stat="identity")

0
Sarah Grogan