首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的三维三元曲面图

R中的三维三元曲面图
EN

Stack Overflow用户
提问于 2017-09-28 19:13:19
回答 1查看 462关注 0票数 0

我有一个具体的问题,可视化的物理性质的3组分混合物在一个三维三元表面图

到目前为止,我只在商业软件中看到了这一点。

我想得到的结果就像下图所示。三维三元等高线图。该示例取自OriginLab 原始实例

另一个商业例子是DesignExpert,具有类似的可视化。

基本三元图表示混合物的组成,而“三角形”上方的高度代表混合物的物理性质(例如密度)。

您可能会问,是否有可用的包可以生成这样的图表?除了这个例子,测量的点应该是可见的,轮廓是拟合的模型。

还是有可能在R内以另一种方式生成这样的图?

我已经尝试过ggtern软件包,但它是不合适的,因为我的混合模型不能表示为简单的三元等高线图。

由于我正在使用ggplot2可视化我的数据在我的PhD论文,我更喜欢任何解决方案,可以提供类似的风格。

谢谢你的报答

马库斯

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 17:34:38

我现在才在网上看到这个问题。也许下面的代码会适用于您:

代码语言:javascript
复制
trimage <- function( z ){

t1 <- sqrt( length( z ) )

im <- aux <- numeric(0)

   for( i in seq( 1, t1, by = 2 ) ){

   idx <- seq( t1^2, i*t1, by = -t1 ) - ((t1 - i):0)

   #idx <- seq( i*t1, t1^2, by = t1 ) - (i-1) 

   im <- c( im, aux, idx, aux )

   aux <- c( aux, NA )

   }
   z <- matrix( z[im], nr=t1 )
  return( z )
 }


library( fields ) #  use  image.plot  function

tab <- scan()
1.0 0.0 0.0 3.10
0.0 1.0 0.0 0.45
0.0 0.0 1.0 0.35
0.5 0.5 0.0 1.70
0.5 0.0 0.5 4.13
0.0 0.5 0.5 0.27


tab <- matrix( tab, 6,4, byrow=T )

colnames( tab ) <- c("x1", "x2", "x3", "y")

tab <- as.data.frame( tab )

r <- lm( y ~ -1 + x1*x2*x3 - x1:x2:x3, data=tab )

summary( r )

x1 <- seq( 1, 0, len=181 )
x2 <- seq( 1, 0, len=181 )
x123 <- expand.grid( x1=x1, x2=x2 )
x123["x3"] <- 1 - x123["x1"] - x123["x2"]

z <- predict( r, x123 )

ztri <- trimage( z )

image.plot( ztri )

contour( ztri, add=T, lwd=2 )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46476673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档