在R图中标注百分比

时间:2010-06-18 14:59:55

标签: r

您好我已经制作了这个功能,它需要一张桌子并为条形图准备标签

prepare_labels <- function(ft){
  labs <- ft
  labs <- paste(labs, "\n", sep="")
  labs <- paste(labs, round(prop.table(ft)*100,2), sep="")
  labs <- paste(labs, "%", sep="")
  return(labs)
}

它实际上工作正常,但有没有更好的方法来编写该函数,上面的代码看起来很难看,我想编写漂亮的代码: - )

例如:

ft <- table(mydata$phone_partner_products)
prepare_labels(ft)
[1] "3752\n34.09%" "226\n2.05%"   "2907\n26.41%" "1404\n12.76%" "1653\n15.02%"
[6] "1065\n9.68%" 

3 个答案:

答案 0 :(得分:5)

由于所有粘贴调用的sep参数相同,因此您可以合并为一个:

labs <- paste(ft,"\n",round(prop.table(ft)*100,2),"%",sep="")

答案 1 :(得分:5)

或者,使用ggplot2

ggplot(mtcars, aes(factor(cyl))) + geom_bar() + stat_bin(aes(label = paste(prop.table(..count..) * 100, "%", sep = "")), vjust = -0.2, geom = "text", position = "identity")

得到这样的东西:

alt text http://img532.imageshack.us/img532/8201/barplotwpct.png

答案 2 :(得分:2)

使用sprintf

sprintf("%d\n%2.2f%%", ft, prop.table(ft)*100)