在直方图

时间:2018-03-12 17:44:55

标签: r ggplot2

我搜索了这个,但我只是附带了这个类似的问题,但标记了堆积直方图中的计数值。我想要做的是在每个直方图栏上标记一个price值。

使用类似的histogram-ggplot-show-count-label-for-each-bin-for-each-category

  ggplot(aes(x = price ), data = diamonds) + 
  geom_histogram(aes(fill = cut ), binwidth=1500, colour="grey20", lwd=0.2) +
  stat_bin(binwidth=1500, geom="text", colour="white", size=3.5,
           aes(label=..count.., group=cut, y=0.8*(..count..))) +
  scale_x_continuous(breaks=seq(0,max(diamonds$price), 1500))

enter image description here

当我将label=..count..更改为..price..时,我

  

FUN中的错误(X [[i]],...):对象'价格'找不到

我怎样才能将price值放在每个直方图之上?

提前感谢!

1 个答案:

答案 0 :(得分:0)

这是一种拼凑在一起的。我不知道如何为像平均值或中位数这样的函数重新定义..count..特殊变量之类的东西。相反,我计算了每个区间内的价格均值,然后annotate - d。我选择不把平均价格放在标杆之上,因为这会向读者说错误,这些是重要的,但它们不是。

library(plyr)
mean.cut <- ddply(diamonds, .(cut(price,seq(0,max(diamonds$price), 1500))), 
                              summarize, v=mean(price))

ggplot(diamonds) +geom_histogram(aes(x=price,fill = cut ), binwidth=1500, 
                                 colour="grey20", lwd=0.2) +  
  scale_x_continuous(breaks=seq(0,max(diamonds$price), 1500))+
  annotate("text", x=seq(0,max(diamonds$price), 1500),  y=mean.cut$v,
                  label=round(mean.cut$v,0))

enter image description here

我玩了一下hte价格值的格式,并喜欢这个代码用于我尝试的各种选项的标签:

label=sprintf(" $%-5s", round(mean.cut$v,-1) )