试图标记条形图ggplot2,得到“错误:美学必须是长度一,或相同的长度......”

时间:2013-07-31 16:53:53

标签: r text ggplot2

我正在使用条形图来显示城市停车收费表的收入分配情况。我的数据框包括停车计时器ID的列,该计量表的年收入,以及该计量表根据其总收入计算的十分位数(1-10)。所以我的命令如下:

> 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))

但是我收到此错误消息:     错误:美学必须是长度1或与长度相同     dataProblems:总数。

我检查了长度(十分位数)和长度(总计),它们的值分别为4600和10。所以我理解为什么会发生这种情况,但为什么我不能在10个条形图中添加任意10个字符?或者让图表自动显示总计,也许使用“身份”?我决定这样做:

  

ggplot(aggrev,aes(x =十分位数,y =收入))+ geom_bar()+ geom_text(aes(label = revenue))

有效,但每次我想要标签时,我都不必创建新的数据帧。

2 个答案:

答案 0 :(得分:0)

将总计添加到停车数据框:

parking$totals <- aggrev$revenue 

这将允许在正确的环境中找到令牌“totals”。 (您可能还需要指定x和y向量。)

答案 1 :(得分:0)

简单地说,你必须有一个看起来像你正在绘制的数据集,除了它有一个变量“标签”。它将您的特定标签映射到x y坐标。添加facet.grid后,这会变得有点棘手。

如果您的数据框有80行,包含4个因子: 您的标签数据框将包含80行x y值以及因子变量+“label”。

{{1}}

enter image description here