2016-06-02 10 views
2

Die Daten, die ich auf Grundstück versuche ist wie folgt aufgebaut:ggplot Label Bars in gruppierte Balkendiagramm

 Year      Country       Count 
1: 2010 St. Vincent and the Grenadines        0 
2: 1970      Ukraine        0 
3: 1980       Yemen        1 
4: 1970      Romania        0 
5: 1950       Cyprus        0 
6: 1950     Netherlands        0 
7: 1980      Mauritania        0 
8: 1980       Niger        0 
9: 2010      Grenada        2 
10: 1970       Israel        6 
11: 1990      Suriname        0 
12: 1990      Singapore        1 
13: 1960       Russia        0 
14: 1970      Barbados        0 
15: 1950       Panama        0 
16: 2010       Mali        3 
17: 1980       Greece        11 
18: 2010      Venezuela        15 
19: 2000       Malawi        9 
20: 2000      Jamaica        34 
21: 1970       Angola        0 
22: 1990      Lebanon        0 
23: 1980  Central African Republic        0 
24: 1950     United Kingdom        1 
25: 2010      Iceland        26 

ich folgende gruppierte Balkendiagramm erstellt haben aus ihm heraus: Grouped Bar Graph

Ich brauche Die Länderbezeichnungen werden mit den entsprechenden Balken angezeigt. Auch nach Rücksprache here und here und position = position_dodge (width = 0,9) wie in den Links vorgeschlagen, scheinen die Etiketten nicht auszurichten. Ich habe auch verschiedene Werte für Breite versucht.

Hier ist der Code, den Plot oben zu erstellen:

> p<-ggplot(x[which(x$Count>0)], aes(Year, Count, label=Country)) + geom_bar(aes(fill = Country), position = "dodge", stat="identity") 
> p+ theme(legend.position="none")+scale_x_discrete(limits=unique(x$Year))+geom_text(position = position_dodge(width= 0.9), aes(y=Count+10), angle=90) 

Antwort

2

fill = Country In der geom_text und geben deutlich Breite Ausweichen um sicherzustellen, dass sowohl die Bars und die Etiketten ausgerichtet sind:

library(data.table) 
library(ggplot2) 

# Fictional sample data 
x <- data.table(Year = c(2010,1970,1980,1970,1950,1950,1980,1980,2010), 
       Country = c("St. Vincent and the Grenadines", "Ukraine", "Yemen", "Romania", "Cyprus", "Netherlands", 
          "Mauritania", "Niger", "Grenada"), Count = c(5,2,1,4,7,6,4,1,2)) 

p <- ggplot(x[which(x$Count>0)], aes(Year, Count)) + geom_bar(aes(fill = Country), position = position_dodge(9), stat="identity") 
p + theme(legend.position="none") + scale_x_discrete(limits=unique(x$Year)) + geom_text(position = position_dodge(width= 9), aes(y=Count+0.25, fill=Country, label=Country, hjust=0), angle=90) 

(Hinweis: Ich habe auch die Position mit hjust angepasst)

enter image description here

0
df<-data.frame(Year=c(1980,2010,1970,1990,2010,1980,2010,2000,2000,1950,2010), 
        Country=c("Yemen","Grenada","Israel","Singapore","Mali","Greece", 
          "Venezuela","Malawi","Jamaica","UK","Iceland"), 
        Count=c(1,2,6,1,3,11,15,9,34,1,26)) 

    ggplot(df,aes(x=factor(Year),y=Count,fill=Country))+ 
     geom_bar(stat="identity",position = "dodge")+ 
     ylim(0,max(df$Count*1.5))+ 
     geom_text(aes(label=Country),hjust=-0.5,vjust=0,colour="red",angle=90,position = position_dodge(.9)) 
Verwandte Themen