【发布时间】:2011-04-21 05:12:20
【问题描述】:
我的数据大多集中在一个小范围 (1-10) 中,但有大量的点 (例如 10%) 在 (10-1000) 中。我想为这些数据绘制一个直方图,该直方图将集中在 (1-10) 上,但也会显示 (10-1000) 数据。类似于直方图的对数刻度。
是的,我知道这意味着并非所有垃圾箱的大小都相同
一个简单的hist(x) 给出
而hist(x,breaks=c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,3,4,5,7.5,10,15,20,50,100,200,500,1000,10000))) 给出
这些都不是我想要的。
更新 按照这里的答案,我现在产生的东西几乎正是我想要的(我使用连续图而不是条形直方图):
breaks <- c(0,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2,4,8)
ggplot(t,aes(x)) + geom_histogram(colour="darkblue", size=1, fill="blue") + scale_x_log10('true size/predicted size', breaks = breaks, labels = breaks)![alt text][3]
唯一的问题是我想在比例和绘制的实际条形之间进行匹配。有两种选择:一种是简单地使用绘制条的实际边距(如何?)然后获得“丑陋”的 x 轴标签,如 1.1754、1.2985 等。我更喜欢的另一种是控制实际使用的 bin 边距,以便它们匹配中断。
【问题讨论】:
-
@Marek 我的问题是记录 x 轴(或类似),而不是值(y 轴)
-
@Joris Meys 与 Marek 的评论相同:我正在寻找日志 x 轴,而不是值 (y) 的日志。
-
@David:我的解决方案为您提供了一个表示原始值的 x 轴,但具有对数刻度。我什至保留你定义的休息时间。怎么不是你问的?
-
@David :您的要求并非易事。 ggplot2 在对数刻度上制作直方图时会忽略中断。您可以设置 binwidth,但这是一个值。因此,所有条形图的大小都相同。如果您不希望这种情况发生,请使用基础绘图。