繁体   English   中英

如何创建对数刻度的色带?

[英]How to create a log-scaled color ramp?

我想在对数10时标上创建从1950年2114年开始的全局温度异常(记录和投影)图,作为黄红色颜色渐变上的颜色。

基于对这个问题的回答 ,我能够创建一个颜色条,该颜色条或多或少是我想要的,只是时间范围是线性的,而不是对数的。

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

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可能不是走的路。

任何输入将不胜感激。

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

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

Log10(YBP)2014年以后的年份

其中YBP = 2014- [年]

因为需要对2014年和2015年的对数转换后的值进行一些微调(以防止出现今年的不确定值并为x参数保持网格线的升序)。 (不理想,但出于我的目的是可以接受的。)如果没有这种欺骗,2013年,2014年和2015年的对数转换年份的顺序将是

0,未定义,0

image帮助文件:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM