3

我创建一个简单的散点图,ggplot2并用颜色可视化 z 变量:

 require(ggplot2)

 data = data.frame(x=runif(1000), y=runif(1000), vis=rf(1000, df1=1, df2=3))
 qplot(x=x, y=y, data=data, color=vis)

但是,这当然不是很丰富,因为分布严重偏斜:

 hist(data$vis)

问题 - 在我看来 - 是等距的中断,它为根本不在样本中的数据创建了 bin。

所以这是我的问题:有没有一种有效的方法来克服这个问题并在更多数据可用的地方创造更多的休息时间。或者换句话说,我正在寻找非线性中断或非等距刹车。

4

1 回答 1

3

编辑:可能更类似于你想要的东西:

breaks <- quantile(data$vis)
qplot(x=x, y=y, data = data, color = vis) + 
     scale_colour_gradientn(breaks = as.vector(breaks), colours = 
     c("grey", "blue", "red"), values = as.vector(breaks), 
     oob = identity, rescaler = function(x,...) x, labels = names(breaks))

在此处输入图像描述

旧答案:在这种情况下,休息不是你真正想要的

qplot(x=x, y=y, data=data, color=vis) + scale_colour_gradient(breaks = 1:10 * 10)

在此处输入图像描述

考虑到我们拥有的数据量

quantile(data$vis, seq(0, 1, 0.1))
          0%          10%          20%          30%          40% 
9.294095e-07 1.883887e-02 8.059213e-02 1.646752e-01 3.580304e-01 
         50%          60%          70%          80%          90% 
6.055612e-01 9.463869e-01 1.638687e+00 2.686160e+00 5.308239e+00 
        100% 
1.693077e+02 

所以可能像

qplot(x=x, y=y, data=data, color=vis) + scale_colour_gradient(limits = c(0,5))

在此处输入图像描述

会很好,这里点 > 5 是灰色的。一个更复杂的解决方案,您可能首先想要的是this

于 2012-08-26T17:40:54.357 回答