2014-06-13 21 views
1

我想根据第三个变量为xy图生成颜色。但是,我不想使用colorRampPalette或类似的方法,因为它们都创建了“预定义”的斜坡。也就是说,在两个极端之间,然后选择颜色的数量,然后函数“均匀”沿斜坡分布。为了给连续性带来幻想,人们必须收集数据,并希望人们猜测出许多颜色,结果不会让结果太不科学。这不是我想要的。我想是执行以下操作之一:基于矢量的非装仓值生成图的颜色

valuea {arbitrary} = colora 
valuez {arbitrary} = colorz 

根据沿颜色梯度的矢量的值,根据这些值分发色没有预定义的在colora和colorz之间的渐变颜色的数量和放置的矢量。

valuea {min(vector)} = colora 
valuea {max(vector)} = colorz 

按照上述操作。

提到了一个“colourschemes”软件包,但是我在一台不做tarball的windows机器上,那个页面上的windows版本进入了死链接。同样,我能找到的关于它的什么小文档也不是直接的。

+2

它不是完全清楚你想要什么,但'colorRamp'且不预定义的调色板中的颜色数量 - 它连续返回颜色基于从0到1的输入。如果将输入缩放为(0,1),则colorRamp应该适合您。我认为我写了colourschemes来提供纯粹的功能数据颜色映射,但似乎没有人使用它,所以我让它死亡... – Spacedman

+0

有了一点黑客攻击,你可以创建任何你想要的斜坡。我最近接受了'grey(0:127/128)'的输出,它看起来像'“#000000”“#020202”“#040404”...'并编辑得到''red_128' 000000“”#020000“”#040000“...'。或者你可以使用'rainbow(length(yourdata))' –

回答

1

如上所述,colorRamp应该可以正常工作。看到这个例子

cr<-colorRamp(c("red","blue")) 

x<-1:30 
y<-runif(30) 

#normalize y to 0-1 
ny <- (y-min(y))/diff(range(y)) 

plot(y~x, col=rgb(cr(ny), maxColorValue=255)) 

产生

enter image description here

+0

这很简单。谢谢。 – Bryan

+0

我会把'colourschemes'固定在我的待办事项列表上的github/CRAN上。 – Spacedman