【问题标题】:How to create a log-scaled color ramp?如何创建对数刻度的色带?
【发布时间】:2014-06-20 22:26:21
【问题描述】:

我想绘制从 1950 年到 2114 年的对数 10 时间尺度的全球温度异常(记录和预测),作为黄红色渐变上的颜色。

根据对this question 的回答,我已经能够创建一个或多或少符合我目标的颜色条,只是时间尺度是线性的,而不是对数的。

这是我使用的代码,带有一个虚拟矢量数据集。

temps<-rnorm(165)

scaled_temps <- (temps - min(temps)) / diff(range(temps))

FUN <- colorRamp(c("yellow","red"))

cols <- FUN(scaled_temps)

rgb(cols, maxColorValue=256)

my.colors = colorRampPalette(c(rgb(cols, maxColorValue=256)))

z=matrix(1:165,nrow=165)
y=1
x=seq(1950, 2114,len=165)
image(x,y,z,col=my.colors(165),axes=FALSE,xlab="",ylab="")
axis(1)

关于如何在对数尺度上绘制这个有什么想法吗?考虑到每年的颜色没有固定的宽度,使用 matriximage 可能不是正确的选择。

我们将不胜感激。

【问题讨论】:

    标签: r colors


    【解决方案1】:

    我应该更仔细地阅读image 的帮助文件。我将x=seq(1950, 2114,len=165) 替换为一个由 log10 转换后的年份值计算的向量(之前在 csv 中):

    -LOG10(YBP) 2014 年之前的年份,

    Log10(YBP) 2014 年之后的年份

    其中 YBP = 2014-[年]

    因为需要稍微修改 2014 年和 2015 年的对数转换值(以防止当前年份出现未定义的值并保持 x 参数的网格线升序)。 (不可取,但对我来说可以接受。)如果没有这种捏造,2013、2014 和 2015 年的对数转换年份序列将是

    0,未定义,0

    来自imagehelp 文件:

    x 参数- 测量 z 值的网格线位置。这些必须是有限的、非缺失的并且按(严格)升序顺序排列。默认情况下,使用从 0 到 1 的等距值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多