如何创建日志缩放颜色渐变?

时间:2014-06-20 22:26:22

标签: r colors

我想创建1950 - 1124年的对数全球温度异常(记录和投影),对数为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可能不是可行的方法。

任何意见都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

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

2014年后的Log10(YBP)

其中YBP = 2014- [年]

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

0,未定义,0

来自image帮助文件:

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