2013-07-31 91 views
0

我使用條形圖來顯示停車收費分配在一個城市。我的數據框包括停車計時器ID,該計費器的年收入以及該計費器根據總收入計入的十分位數(1-10)。所以我的命令看起來像這樣:試圖標籤條形圖ggplot2,得到「錯誤:美學必須是長度一,或相同的長度...」

> rev <- ggplot(parking, aes(x=decile, y=revenue)) 
> rev + geom_bar(stat="identity") 

而結果正是我想要的,但我想補充的總收入各等分上面圖中的每一個欄,我不知道如何。我嘗試這樣做:

> aggrev <- aggregate(revenue~decile, data=parking, sum) 
> totals <- aggrev$revenue 
> rev + geom_bar(stat="identity") + geom_text(aes(label=totals)) 

但我收到此錯誤信息: 錯誤:美學必須是一個長度或相同長度的 dataProblems:總數。

我檢查了長度(十分位數)和長度(總計),它們的值分別是4600和10。所以我明白爲什麼會發生這種情況,但爲什麼我不能在10個酒吧中添加任何10個字符?或者讓圖表自動顯示小節總數,也許使用「身份」?我決定只要運行這個:

ggplot(aggrev, aes(x=decile,y=revenue))+geom_bar()+geom_text(aes(label=revenue))

其工作原理,但我寧願沒有我想有標籤,每次做一個新的數據幀。

+0

你需要告訴ggplot要將標籤...怎麼會知道你希望他們在每欄的頂部...看看[這裏](HTTP:/ /stackoverflow.com/questions/6455088/how-to-put-labels-over-geom-bar-in-r-with-ggplot2) – Justin

+1

爲新圖層創建新數據框或創建全新變量是您簽名的內容當你開始使用ggplot時。它沒有被稱爲「圖形語法」。如果你的嘗試在語法上不正確,那麼...... – joran

回答

0

添加總計到停車數據框:

parking$totals <- aggrev$revenue 

這將使令牌「總計」在正確的環境又找到。 (你可能還需要指定一個x和y向量。)

0

簡而言之,你必須有一個看起來像你正在繪圖的數據集,除了它將有一個變量「標籤」。它將您的特定標籤映射到xy座標。一旦添加facet.grid,這會有點棘手。

如果您的數據框有80行,包含4個因子: 您的標籤數據框將包含80行xy值以及因子變量+「label」。

datain <- data.frame(type=rep(c('dog','cat'),40),height=c(1,5,3,2,5,2,6,8,10,3)) 
datain <- datain[order(datain$type),] 


for_text <- data.frame(type=c('dog','cat'),height=c(10.5,9),label=c('dog','cat')) 
plot <- ggplot(datain,aes(x=type,y=height)) + 
    geom_boxplot(width=1) + 
    geom_text(data=for_text,aes(x=for_text$type,y=for_text$height,label=for_text$label)) 

enter image description here

相關問題