[英]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)
关于如何在对数刻度上进行绘制有任何想法吗? 考虑到每年的颜色都没有固定的宽度,使用matrix
和image
可能不是走的路。
任何输入将不胜感激。
我应该仔细阅读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.