2014-10-30 13 views
5

İki farklı yıl için karmaşık bir barplot çizimi yapmak ve gelir numaralarını buna göre çubuğun üstüne koymak istiyorum. Burada bulduğum biraz öneriyi denedikten sonra, tam olarak istediğim şeyi alamıyorum (tüm sayılar eşit olarak yayılmak yerine orta çubukların/sütunların ortasında gösterildi). Her türlü önerinize açığız. Teşekkürler!ggplot2'yi kullanarak fasetlerden kaçınınan bir arşın tepesine metin ekleyin

Benim son girişim

# 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**

cevap

15

Siz de metin değerlerini atlatmak gerekiyor. Ayrıca group= yüzden üzerinde atlatmak için hangi değerleri bilir ihtiyaç

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) 

deneyin.

+0

TEŞEKKÜRLER. Geom_text() 'çağrılarımda' group' dahil olmak üzere neden gözardı ettiğimi bilmiyorum ama bu beni kurtardı! – Steven

İlgili konular