我使用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)
问题 - 在我看来 - 是等距离中断,它为数据创建容器,而这些数据根本就不在样本中。
所以这是我的问题:是否有一种有效的方法来克服这个问题,并在有更多数据可用的情况下创建更多的中断。换句话说,我正在寻找非线性中断或非等距制动。
答案 0 :(得分: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))
会很好,这里点&gt; 5是灰色的。一个更复杂的解决方案,您可能首先想要的是this。