r - R中的2d颜色渐变图

标签 r colors plot linear-gradients

我想产生一个2d彩色渐变矩形,如下面右图所示。我如何在R中做到这一点?使用colorRampRColorBrewer或其他函数/程序包,我可以生成漂亮的一维dolor渐变。但是我该如何在2D中做到这一点,包括角落中的几种颜色,例如右上方的矩形?



我想得到的是以下两种渐变类型:




BTY:我完全忘了提到我找到了上面的图表here(由Luca Fenu生产)。

最佳答案

感谢您对我的帖子发表评论-很高兴它引起了一些讨论。
这是实现右上角绘图所需的最少代码-我敢肯定还有其他更有效的方法可以执行此操作...但这不需要其他库即可工作,并且应该很容易遵循...您可以更改通过玩max_sat和alpha_default变量来实现饱和度和Alpha混合...

#define extremes of the color ramps
rampk2r <- colorRampPalette(c(rgb(  0/255,   0/255,   0/255), rgb(218/255,   0/255,   0/255)))
rampk2g <- colorRampPalette(c(rgb(  0/255,   0/255,   0/255), rgb(  0/255, 218/255,   0/255)))

# stupid function to reduce every span of numbers to the 0,1 interval
prop <- function(x, lo=0, hi=100) {
    if (is.na(x)) {NA}
    else{
        min(lo,hi)+x*(max(lo,hi)-min(lo,hi))
    }
}

rangepropCA<-c(0,20)
rangepropCB<-c(0,20)

# define some default variables
if (!exists('alpha_default')) {alpha_default<-1} # opaque colors by default
if (!exists('palette_l')) {palette_l<-50} # how many steps in the palette
if (!exists('max_sat')) {max_sat<-200} # maximum saturation
colorpalette<-0:palette_l*(max_sat/255)/palette_l # her's finally the palette...

# first of all make an empy plot
plot(NULL, xlim=rangepropCA, ylim=rangepropCB, log='', xaxt='n', yaxt='n', xlab='prop A', ylab='prop B', bty='n', main='color field');
# then fill it up with rectangles each colored differently
for (m in 1:palette_l) {
    for (n in 1:palette_l) {
        rgbcol<-rgb(colorpalette[n],colorpalette[m],0, alpha_default);
        rect(xleft= prop(x=(n-1)/(palette_l),rangepropCA[1],rangepropCA[2]) 
            ,xright= prop(x=(n)/(palette_l),rangepropCA[1],rangepropCA[2])
            ,ytop= prop(x=(m-1)/(palette_l),rangepropCB[1],rangepropCB[2]) 
            ,ybottom= prop(x=(m)/(palette_l),rangepropCB[1],rangepropCB[2])
            ,col=rgbcol
            ,border="transparent"
        )
    }
}
# done!

关于r - R中的2d颜色渐变图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070101/

相关文章:

excel - 更改条形图中的条形颜色

html - 仅使用 HTML5 和 CSS3 更改主体背景颜色..?

r - 将基本图形和 ggplot 图形合并到图形设备的子图形中

r - 将列的平均值添加为线图中的点

matlab - 我应该怎么做才能不显示所有情节的图例?

r - 将函数应用于数据框的列(列是列表)

r - 带有 ggplot 的抖动图以及每组的平均线

r - 条件(不等式)加入 data.table

r - ggplot2 - 无法在循环内使用 scale_fill_manual 应用颜色

css - 其他浏览器中的 moz-border-color