R中自定义函数的等高线图

马哈茂德

我正在使用一些自定义函数,因此需要基于参数的多个值为其绘制轮廓。

这是一个示例函数:

在此处输入图片说明

我需要绘制这样的轮廓图:

在此处输入图片说明

任何想法?

谢谢。

红外光谱

首先,您构造一个函数,fourvar函数将这四个参数用作参数。在这种情况下,您可以使用3个变量来完成此操作,其中一个变量是lambda_2而不是lambda_1。Alpha1固定为2,因此alpha_1 / alpha_2的变化范围为0-10。

fourvar <- function(a1,a2,l1,l2){ 
  a1* integrate( function(x) {(1-x)^(a1-1)*(1-x^(l2/l1) )^a2} , 0 , 1)$value }

诀窍是要认识到该integrate函数返回一个列表,而您只希望该列表的“值”部分可以被Vectorize()-ed。

其次,您使用该函数构造一个矩阵:

  mat <- outer( seq(.01, 10, length=100),  
                seq(.01, 10, length=100), 
                Vectorize( function(x,y) fourvar(a1=2, x/2, l1=2, l2=y/2) ) )

这样,使用即可轻松完成在这些位置带有标签的绘图创建任务lattice::contourplot经过合理数量的搜索后,看来ggplot2中的geom_contour标签解决方案仍在进行中。我发现的唯一标记策略是在外部包装中。但是,directlabel在这种情况下,“ directlabels”包的功能似乎没有足够的控制权来正确展开标签。在我看到的其他示例中,它确实将标签分布在绘图区域周围。我想我可以看一下代码,但是由于它取决于'proto'程序包,因此它可能会被奇怪地封装起来,所以我没有看。

require(reshape2)
mmat <- melt(mat)
str(mmat) # to see the names in the melted matrix
g <- ggplot(mmat, aes(x=Var1, y=Var2, z=value) )
g <- g+stat_contour(aes(col = ..level..), breaks=seq(.1, .9, .1) )
g <- g + scale_colour_continuous(low = "#000000", high = "#000000") # make black
install.packages("directlabels", repos="http://r-forge.r-project.org", type="source")
require(directlabels)
direct.label(g)

请注意,这些是矩阵的索引位置,而不是参数的比率,但这应该很容易修复。

在此处输入图片说明

另一方面,这就是将其构造成格子的难易程度(我认为它看起来“更干净”:

  require(lattice)
  contourplot(mat, at=seq(.1,.9,.1))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ggplot2等高线图中的自定义级别?

来自分类Dev

使用函数绘制等高线图

来自分类Dev

散景中的等高线图

来自分类Dev

坏等高线图

来自分类Dev

条件等高线图

来自分类Dev

在matplotlib中绘制最小二乘估计函数的等高线图

来自分类Dev

Python 中 matplotlib 等高线图的 ValueError

来自分类Dev

Matlab:用等高线填充等高线图

来自分类Dev

Matlab:用等高线填充等高线图

来自分类Dev

等高线图x标签

来自分类Dev

多元高斯的等高线图

来自分类Dev

填充matplotlib等高线图

来自分类Dev

从数据框创建等高线图

来自分类Dev

填充matplotlib等高线图

来自分类Dev

八度等高线图

来自分类Dev

等高线图x标记

来自分类Dev

等高线图例-Matplotlib

来自分类Dev

平滑边缘等高线图

来自分类Dev

等高线图二元对数正态密度函数python

来自分类Dev

R在ggplot2等高线图中添加图例和directlabel

来自分类Dev

从R的等高线图中的轮廓图中删除图例

来自分类Dev

R在ggplot2等高线图中添加图例和directlabel

来自分类Dev

将构成等高线图矩阵的数据点覆盖在MATLAB中的同一图上

来自分类Dev

Matplotlib:如何为等高线图调整颜色栏中的线宽?

来自分类Dev

从mgcv中的vis.gam更改等高线图中的颜色

来自分类Dev

将数据重新排列到等高线图的矩阵中

来自分类Dev

给定范围内的matplotlib等高线图

来自分类Dev

将水平值存储在等高线图中

来自分类Dev

如何使等高线图叠加在底图上