【问题标题】:Using gradient displays for histograms in r在 r 中为直方图使用梯度显示
【发布时间】:2014-02-06 02:56:57
【问题描述】:

我有一个如下所示的数据集 (n = 9,141,954)

data<-c(rep(1, times=401),rep(2,times=443789),rep(3,times=5276376),rep    (4,times=3003895),rep(5,times=404108),rep(6,times=13181),rep(7,times=205))

直方图如下所示:

hist(data,prob=T,breaks=5)

从左到右,我想显示颜色“darkgreen”“chartreuse4”“yellowgreen”“yellow”“orange2”“red”和“red3”

我知道我可以使用 col=c("darkgreen","chartreuse4", ....etc),但我想做的是将这些颜色显示为直方图中的渐变,由每个值对数据集的相对贡献。例如,value = 1 仅占单元格值 (401/9141954*100) 的 0.004%,而 value = 4 占数据的 32.9%。因此,我希望渐变显示有 0.004% 与“深绿色”相关联,但 32.9% 与“黄色”相关联,其余的值/颜色依此类推。

有谁知道这是怎么做到的???

【问题讨论】:

    标签: r plot gradient histogram


    【解决方案1】:

    这样的?

    res <- hist(data,breaks=5)
    plot(res)
    
    cols <-c("darkgreen","chartreuse4","yellowgreen","yellow","orange2","red","red3")
    colcombos <- data.frame(embed(cols,2)[,2:1],nums=round(res$density*600))
    selcols <- unlist(
                 apply(colcombos,1,function(x) colorRampPalette(c(x[1],x[2]))(x[3]))
               )
    
    dens <- 100
    bar.dens <- 1/100
    
    rect(
     seq(1,7-bar.dens,bar.dens),
     0,
     seq(1+bar.dens,7,bar.dens),
     rep(res$counts,each=dens),
     col=selcols,
     border=NA
    )
    
    plot(res,add=TRUE)
    

    结果,不幸的是,它看起来并不那么令人兴奋,但颜色就在那里,如果你绘制条形图的高度一致:

    【讨论】:

    • 嗨。感谢回复。但是我在从绿色到黄色橙色再到红色的渐变阴影之后,显示“深绿色”的比例与值 1 对齐...到红色 3 的量与值 7 对齐。对不起,如果我之前的解释不清楚!我不知道如何创建渐变阴影,类似于从黑到白的灰度显示???
    • 我不确定你的意思。使用hist(..., col=c("darkgreen","charteuse4", etc etc)) 不就可以实现吗?您可以模拟一个示例并将其发布到 imgur.com 或类似的地方吗?
    • 你好。抱歉(R 和堆栈交换的新手!)我试图在一个垃圾箱中显示不止一种颜色。上面的例子有 4 个 bin,我想显示从左到右的 7 种颜色,类似于 3D 等高线图上经常使用的彩虹显示。我注意到您对上一篇文章的回答之一,使用 colorRampPalette 看起来相似(从 col=c(red,blue) 的 n 颜色梯度)。但关键区别在于,我想在直方图 bin 中显示不止一种颜色,即 4 或 5 个 bin 中的七种颜色......
    • @user3229751 - 我又试了一次 - 看看你的想法。
    • 看起来棒极了!谢谢。最后一件事 - 有什么方法可以不均匀地显示颜色渐变,具体取决于原始数据集。例如,数据集中只有 401 个值等于 1,但 5276376 个值等于 3。如果深绿色代表值 1,黄绿色代表值 3,我们可以按比例对渐变进行着色吗?即几乎没有(
    猜你喜欢
    • 2013-06-22
    • 2013-01-25
    • 2011-08-01
    • 2020-12-10
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多