Come mettere etichette su geom_bar per ogni barra in R con ggplot2


99

Ho trovato questo, Come mettere etichette su geom_bar in R con ggplot2 , ma mette solo etichette (numeri) su una sola barra.

Ecco, diciamo, due barre per ogni asse x, come fare la stessa cosa?

I miei dati e il codice hanno questo aspetto:

dat <- read.table(text = "sample Types Number
sample1 A   3641
sample2 A   3119
sample1 B   15815
sample2 B   12334
sample1 C   2706
sample2 C   3147", header=TRUE)

library(ggplot2)
bar <- ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
  geom_bar(position = 'dodge') + geom_text(aes(label=Number))

Quindi, otterremo: inserisci qui la descrizione dell'immagine

Sembra che anche i testi numerici siano posizionati nello schema "schiva". Ho cercato nel manuale geom_text per trovare alcune informazioni, ma non riesco a farlo funzionare.

Suggerimenti?

Risposte:


142

Prova questo:

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
     geom_bar(position = 'dodge', stat='identity') +
     geom_text(aes(label=Number), position=position_dodge(width=0.9), vjust=-0.25)

output ggplot


2
(+1) Puoi anche aggiungere vjust = -0.5dopo l' position()istruzione in modo che i valori siano posizionati appena sopra le barre.
smillig

2
Grandi grazie, a proposito, il codice suggerisce l'impostazione ymax, quindi aes(x=Types, y=Number, fill=sample, ymax = 16000)produrrà un'area superiore più ampia per l'asse y, in modo che 15815 venga mostrato meglio.
Puriney

Ottengo questo errore: Errore: stat_count () non deve essere utilizzato con un'estetica.
userJT

3
questa risposta ha più recente sintassi stackoverflow.com/questions/33079500/...
userJT

2
@Seymourgeom_text(..., angle=-90)
rcs

4

Per aggiungere alla risposta di rcs, se vuoi usare position_dodge () con geom_bar () quando x è una data POSIX.ct, devi moltiplicare la larghezza per 86400, ad esempio,

ggplot(data=dat, aes(x=Types, y=Number, fill=sample)) + 
 geom_bar(position = "dodge", stat = 'identity') +
 geom_text(aes(label=Number), position=position_dodge(width=0.9*86400), vjust=-0.25)
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.