2013-10-16 18 views
1

我希望有人能够以正确的方式指导我。我正在尝试生产约100个直方图,因此我的问题的解决方案必须易于重现。我有一个范围从0.0000(零值)到1.0000的上限值的向量。有0.0000个值的显着数量,其余的值更分散。ggplot2 - 直方图的不同分档大小

我想现在创建一个具有不同容器大小的直方图。我想对所有的零个值的垃圾桶,然后块大小应该是0.005

下面是一些可重复的代码,说明我的实际数据:

per_value <- rbeta(200, 1, 1, ncp = 0.3) 
percent_change <- c(0,0,0,0,0, rbeta(195, 1, 1, ncp = 0.1)) 

valua_chg <- data.frame(cbind(per_value, percent_change)) 

ggplot(valua_chg, aes(x=percent_change)) + 
    stat_bin(breaks=c(0, seq(0.001,1.0, by=0.005))) 

这里被创建的图片代码:

enter image description here

的问题是,对于零仓仓的尺寸极小,不一样大小的其他段。有谁知道如何解决这一问题。

谢谢!

+1

我不明白。你说你想要一个无限小的箱子作为零值,然后你说问题是这个箱子太小了......? – joran

+1

据我所知,你想显示与其他酒吧宽度相同的零计数箱。 为此,您需要考虑为x尺度编写自己的转换。看看这篇文章: http://blog.ggplot2.org/post/25938265813/defining-a-new-transformation-for-ggplot2-scales – user2840286

回答

2

做到这一点最快,最简单的方法是设置最低的中断为-0.004,以便包含零的bin具有0.005的相同宽度。 bin不会居中在零位,但是如果您的数据绑定在0和1之间,则应该是OK:

ggplot(valua_chg, aes(x=percent_change)) + 
    stat_bin(breaks=c(-0.004, seq(0.001,1.0, by=0.005))) 
+0

我会明天工作创建因子箱,看看是否修复问题。如果不是,我将使用你的解决方案创建一个非常小的零库来显示零计数。 – user1738753