Riordina le barre in geom_bar ggplot2


119

Sto cercando di creare un grafico a barre in cui la trama è ordinata dal miRNAcon il più alto valueal miRNAcon il più basso. Perché il mio codice non funziona?

> 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")

Risposte:


216

Il tuo codice funziona bene, tranne per il fatto che il barplot è ordinato dal più basso al più alto. Quando vuoi ordinare le barre dall'alto verso il basso, dovrai aggiungere un -segno prima value:

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

che dà:

inserisci qui la descrizione dell'immagine


Dati utilizzati:

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"))

non viene ordinato nella mia trama per qualche motivo
user3741035

@ user3741035 Strano. L'hai usato sul set di dati di esempio fornito sopra o sull'intero set di dati?
Jaap

Quale versione di R & ggplot stai usando? Puoi anche privare un set di dati campione più ampio (preferibilmente con più di un valore per variable)?
Jaap

6
ho trovato la soluzione: avevo caricato la libreria (gplots) che ha incasinato le cose
user3741035

1
@maycca Mi sta dando il risultato corretto (sia su OSX 10.10.4 / Windows 7, R 3.2.3 e ggplot2 2.1.0). Forse dovresti iniziare con una nuova sessione?
Jaap
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.