【问题标题】:3d ternary surface graphs in RR中的3d三元曲面图
【发布时间】:2018-03-10 15:24:00
【问题描述】:

我有一个关于在 3d 三元曲面图 中可视化 3 组分混合物的物理特性的具体问题。

到目前为止,我只在商业软件中看到过这种情况。

我想要的结果如下图所示。 3d ternary contour plot。示例取自OriginLabOriginlab Examples

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

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

您可能会问,是否有任何可用的软件包能够生成这样的图表?除了示例之外,测量点应该是可见的,轮廓是拟合的模型。

或者是否有可能在 R 中以另一种方式生成此类图表?

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

由于我在博士论文中使用 ggplot2 来可视化我的数据,所以我更喜欢任何可以提供模拟风格的解决方案。

感谢您的高度评价

马库斯

【问题讨论】:

  • 查看qualityTools::wirePlot3()
  • 好的,谢谢。我以前看过 qualityTools 包。但据我了解该软件包,您只能依赖预定义的混合实验,例如mdo = mixDesign (3 ,2 , center = FALSE, axial = FALSE, randomize = FALSE, replicates = c(1,1,2,3))我有一个混合设计,其设计点的数量差异很大,我无法将其引入 qualityTools 格式。

标签: r plot 3d contour ternary


【解决方案1】:

我现在才在互联网上看到这个问题。也许下面的代码对你有用:

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 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2018-03-15
    • 2017-02-08
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多