我有一个关于 3d三元表面图中3组分混合物物理特性可视化的具体问题。
到目前为止,我只在商业软件中看到了这一点。
我希望得到的结果如下图所示。 3d ternary contour plot。该示例来自OriginLab Originlab Examples
另一个商业示例是DesignExpert,具有类似的可视化。
基本的三元图表示混合物的组成,而三角形的高度表示#34;表示混合物的物理性质(例如密度)。
可能会问你是否有任何可用的包可以生成这样的图表?除了这个例子,测量点应该是可见的,轮廓是拟合的模型。
或者是否有可能在R?
中以另一种方式生成这样的图形我已经尝试过ggtern包,但它不合适,因为我的混音模型不能简单地表示为三元等高线。
由于我在博士论文中使用ggplot2进行可视化我的数据,我更倾向于任何可以提供模拟风格的解决方案。
感谢avvvance
马库斯
答案 0 :(得分:0)
我现在才在互联网上看到这个问题。也许下面的代码适合你:
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 )