gpt4 book ai didi

r - R : nonlinear key range 中的填充.contour()

转载 作者:行者123 更新时间:2023-12-04 04:48:39 26 4
gpt4 key购买 nike

我正在使用filled.contour() 来绘制存储在矩阵中的数据。数据是由(高度)非线性函数生成的,因此其分布根本不均匀,范围非常大。

因此,我必须使用“级别”选项来微调情节。但是,filled.contour() 并没有使用这些自定义级别来为热图制作适当的颜色键,我觉得这很令人惊讶。

这是我的意思的一个简单示例:

    x = c(20:200/100)
y = c(20:200/100)
z = as.matrix(exp(x^2)) %*% exp(y^2)
filled.contour(x=x,y=y,z=z,color.palette=colorRampPalette(c('green','yellow','red')),levels=c(1:60/3,30,50,150,250,1000,3000))

如您所见,使用上面的代码生成的颜色键几乎没有用。我想使用某种投影(可能是 sin(x) 或 tanh(x)?),以便在键中不会过度表示上限(以线性方式)。

在这一点上,我想:

1)知道我是否遗漏了一些非常简单/明显的东西,例如:一个选项,可以自动使这个“键范围适应”;
2)如果1)的答案是否定的,就如何自己做寻求建议/帮助。

非常感谢!

PS:我为我的英语道歉,这远非完美。如果您需要我澄清任何事情,请告诉我。

最佳答案

我感觉到你的沮丧。我从未找到使用 filled contour 的方法来做到这一点,所以通常恢复使用 image然后将我自己的比例添加为单独的情节。我写了函数image.scale帮助解决这个问题(link)。下面是一个示例,说明如何为您的比例提供对数转换以扩展小值 - 然后使用非对数转换值作为标签标记比例:

例子:

source("image.scale.R") # http://menugget.blogspot.de/2011/08/adding-scale-to-image-plot.html

x = c(20:200/100)
y = c(20:200/100)
z = as.matrix(exp(x^2)) %*% exp(y^2)

pal <- colorRampPalette(c('green','yellow','red'))
breaks <- c(1:60/3,30,50,150,250,1000,3000)
ncolors <- length(breaks)-1
labs <- c(0.5, 1, 3,30,50,150,250,1000,3000)

#x11(width=6, height=6)
layout(matrix(1:2, nrow=1, ncol=2), widths=c(5,1), heights=c(6))
layout.show(2)

par(mar=c(5,5,1,1))
image(x=x,y=y,z=log(z), col=pal(ncolors), breaks=log(breaks))
box()

par(mar=c(5,0,1,4))
image.scale(log(z), col=pal(ncolors), breaks=log(breaks), horiz=FALSE, xlab="", ylab="", xaxt="n", yaxt="n")
axis(4, at=log(labs), labels=labs)
box()

结果:

enter image description here

关于r - R : nonlinear key range 中的填充.contour(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com