我有一个具体的问题,可视化的物理性质的3组分混合物在一个三维三元表面图。
到目前为止,我只在商业软件中看到了这一点。
我想得到的结果就像下图所示。三维三元等高线图。该示例取自OriginLab 原始实例。
另一个商业例子是DesignExpert,具有类似的可视化。
基本三元图表示混合物的组成,而“三角形”上方的高度代表混合物的物理性质(例如密度)。
您可能会问,是否有可用的包可以生成这样的图表?除了这个例子,测量的点应该是可见的,轮廓是拟合的模型。
还是有可能在R内以另一种方式生成这样的图?
我已经尝试过ggtern软件包,但它是不合适的,因为我的混合模型不能表示为简单的三元等高线图。
由于我正在使用ggplot2可视化我的数据在我的PhD论文,我更喜欢任何解决方案,可以提供类似的风格。
谢谢你的报答
马库斯
发布于 2018-04-13 17:34:38
我现在才在网上看到这个问题。也许下面的代码会适用于您:
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 )https://stackoverflow.com/questions/46476673
复制相似问题