【问题标题】:R - Assign special color for lowest value in colorRampPaletteR - 为 colorRampPalette 中的最小值分配特殊颜色
【发布时间】:2019-07-30 11:54:59
【问题描述】:

我有一个这样的数据框:

library(lubridate)
date_list = seq(ymd('2017-01-01'),ymd('2018-12-31'),by='day')

values = sample(0:35, 730, replace=TRUE)
testframe = data.frame(Date = date_list, Value = values)

值在 0 到 35 之间。我想用这些数据创建一个热图,颜色从浅蓝 1 到皇家蓝。我的问题是,我想突出显示为 0 的值。它们应该以红色突出显示。所以我不想有一个从 0 到下一个数字的渐变,我完全想把 0 和 1 分开。所以所有的 0 都应该是红色的,所有其他值都应该以从浅蓝色 1 到皇家蓝色的渐变着色。

我正在使用包含 colorRampPalette 的热图,完整代码在这里:Heatmap Code

当我在代码的第 83 行添加 btb<- c("lightblue1", "royalblue") 并在第 46 行更改颜色时,我得到了没有红色的渐变。我现在如何为所有 0 添加红色?

关于如何解决这个问题有什么建议吗?

【问题讨论】:

    标签: r colors gradient heatmap


    【解决方案1】:

    更新答案

    除了添加行

    b2b <- c("lightblue1", "royalblue")
    

    你也需要改变

    calendar.pal <- colorRampPalette((col.sty), space = "Lab")
    

    类似

    calendar.pal1 <- colorRampPalette((col.sty), space = "Lab")
    calendar.pal  <- function(n) c("red", calendar.pal1(n-1))
    

    然后,我们就可以得到你想要的红色高亮了

    calendarHeat(date_list, values, color = "b2b", ncolors = 15)
    

    请注意,我已经减少了那里的颜色数量。如果ncolors 值太高,红色会消失,所以你必须注意。

    旧答案

    你链接的代码很长,所以我没有花时间研究它。相反,我为您的一般问题生成了以下解决方案:

    首先,创建一个给出基本色带的函数:

    foo <- colorRampPalette(c("lightblue1", "royalblue"))
    

    然后,创建一个调用 foo() 用于颜色渐变的函数,但在此处根据您的突出显示规则对其进行修改:

    bar <- function(x) {
        pal <- foo(length(x))
        pal[which(x == 0)] <- "red"
        return(pal)
    }
    

    我在您的帖子中生成数据(设置可重复性的种子):

    library(lubridate)
    date_list = seq(ymd('2017-01-01'),ymd('2018-12-31'),by='day')
    set.seed(123)
    values = sample(0:35, 730, replace=TRUE)
    

    并试用功能:

    plot(date_list, values, col = bar(values), pch = 19)
    

    【讨论】:

    • 谢谢,这就是我想要的。不幸的是,我无法在代码中正确使用它。实际上只有 3 行用于颜色。它的第 46 行分配渐变,第 80-86 行和第 127 行。我尝试将 b2b
    • @Mr.Spock 我对您现在要查找的内容有了更好的了解。稍后将更新答案。
    • 不用担心,@Mr.Spock -- 很高兴它有帮助!
    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2015-01-28
    • 2019-10-22
    • 2019-09-21
    相关资源
    最近更新 更多