2014-10-30 18 views
5

Chciałbym wykreślić unikany barplot na dwa różne lata i odpowiednio umieścić numery przychodów na górze paska. Po wypróbowaniu całkiem jakiejś sugestii, którą znalazłem tutaj, nadal nie mogę dostać tego, czego chcę (wszystkie liczby były wyświetlane w środkowych środkowych słupkach/kolumnach zamiast równomiernie rozprzestrzeniać się). Wszelkie sugestie będą mile widziane. Dzięki!Dodaj tekst na wierzchu pomijanego na klawiaturze barplota, używając ggplot2

Moja ostatnia próba

# Disable scientific notation 
options("scipen" = 100, "digits" = 1) 

censusData <- structure(list(Year = c(2012L, 2007L, 2012L, 2007L, 2012L, 2007L, 
             2012L, 2007L, 2012L, 2007L, 2012L, 2007L, 2012L, 2007L, 2012L, 
             2007L, 2012L, 2007L, 2012L, 2007L, 2012L, 2007L, 2012L, 2007L 
            ), County = c("A", "A", "B", "B", "C", "C", "Sum", "Sum", "A", 
             "A", "B", "B", "C", "C", "Sum", "Sum", "A", "A", "B", "B", "C", 
             "C", "Sum", "Sum"), variable = structure(c(1L, 1L, 1L, 1L, 1L, 
             1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
             3L, 3L, 3L), .Label = c("Total_Revenue", "Crop_Revenue", "Livestock_Revenue" 
            ), class = "factor"), value = c(1645.51, 1203.806, 68.911, 60.949, 
             923.163, 525.918, 2637.584, 1790.673, 1069.497, 787.459, 47.157, 
             38.735, 825.050228, 470.024, 1941.704228, 1296.218, 576.013, 
             416.347, 21.754, 22.214, 98.112772, 55.894, 695.879772, 494.455 
            )), row.names = c(NA, -24L), .Names = c("Year", "County", "variable", 
             "value"), class = "data.frame") 

# Dodged barplot 
qbarplot_yr_1 <- ggplot(censusData, aes(County, value)) + facet_grid(. ~ Year) + 
    geom_bar(aes(fill = variable), position = "dodge", stat="identity") + 
    xlab("County") + ylab("Revenue (Million USD)") + 
    scale_fill_discrete(name = 'Legend', labels=c("Total", "Crop", "Livestocks")) + 
    theme(axis.ticks.x = element_blank()) + 
    theme(panel.background = element_rect(colour='dark grey')) + 
    theme(strip.text.x = element_text(size = 20, face="bold"), 
     strip.background = element_rect(colour="dark grey")) 

# Add text on top of the bar 
qbarplot_yr_1 + geom_text(data = censusData, 
          aes(x = County, y = value + 150, label = format(value, nsmall = 0, scientific = FALSE)), 
          color="blue") 

**ggplot2 output**

Odpowiedz

15

Musisz dodge wartości tekstowe, jak również. Spróbuj

qbarplot_yr_1 + geom_text(data = censusData, 
     aes(x = County, group=variable, y = value + 150, 
     label = format(value, nsmall = 0, digits=1, scientific = FALSE)), 
     color="blue", position=position_dodge(.9), hjust=.5) 

również potrzebne group= więc wie, jakie wartości na unik.

+0

DZIĘKUJEMY. Nie wiem, dlaczego przeoczyłem, włączając 'group' w moich wywołaniach' geom_text() ', ale to mnie uratowało! – Steven

Powiązane problemy