2017-09-19 5 views
1

Je suis nouveau dans R, et j'aimerais visualiser une donnée en utilisant Bargraphe et ggplot.Comment mettre des lettres sur geom_bar lorsque la valeur est négative dans R

J'ai les données ci-dessous, quand je veux viser ces données le texte pour les valeurs négatives ne sont pas montrés ci-dessous la barre.

dat <- read.table(text = "sample Types Value 
sample1 A -36 
sample2 B 31 
sample1 C 15 
sample2 D -12 
sample1 E 27 
sample2 F 16 
sample2 G -10 
sample2 H 2 
sample2 I 6 
sample2 J -7 
sample2 K -8" 
, header=TRUE) 

library(ggplot2)  
px <- ggplot(data = dat , aes(x = Types , y = Value , Colour = Types)) 
px + geom_bar(stat = "identity" ,color = "#FFFFFF" , fill = "dodgerblue3") + 
    geom_text(aes(label=Value), position=position_dodge(width=0.9), hjust= -.25,vjust=0.25 ,size =3.5 , angle = 90) 

Répondre

3

position Col de geom_text sur l'axe y avec y = Value + 2 * sign(Value)

library(ggplot2) 
ggplot(dat, aes(Types, Value)) + 
    geom_bar(stat = "identity" ,color = "#FFFFFF" , fill = "dodgerblue3") + 
    geom_text(aes(y = Value + 2 * sign(Value), label = Value), 
       position = position_dodge(width = 0.9), 
       size = 3.5 , angle = 90) 

enter image description here

Une autre parcelle avec quelques réglages visuels mineurs que je fais sur mes parcelles:
Comme vous avoir des numéros avec des barres que vous n'avez pas besoin d'axe Y (il est redondant).

ggplot(dat, aes(Types, Value)) + 
    geom_bar(stat = "identity", color = "black" , fill = "grey", 
      size = 0.7, width = 0.9) + 
    geom_text(aes(y = Value + 2 * sign(Value), label = Value), 
       position = position_dodge(width = 0.9), 
       size = 5) + 
    theme_classic() + 
    theme(axis.text.x = element_text(size = 12), 
      axis.title = element_text(size = 20), 
      axis.text.y = element_blank(), 
      axis.line = element_blank(), 
      axis.ticks = element_blank()) 

enter image description here