轴标签在rgl图中的位置

问题描述 投票:0回答:1

我使用rgl包生成了一个表面图。我想将z轴标签定位在我选择使用axes3d放置z轴边缘的位置。这是我的代码

alpha = 1.8
beta <- c(-1,1,0)
delta <- c(8,6,10)
gamma <- c(3,4,5)

m = 100
t = c(0:100)/m

d2 = delta[2]
d3 = delta[3]
g2 = gamma[2]
g3 = gamma[3]
b2 = beta[2]
b3 = beta[3]
z = (1-t)*d2 + t*d3
x = ((1-t)*g2)^alpha + (t*g3^alpha)
y = (((1-t)*g2)^alpha)*b2 + ((t*g3)^alpha)*b3
y = y/x
x = x^(1/alpha)

d1 = delta[1]
g1 = gamma[1]
b1 = beta[1]

xa = matrix(data = NA, nrow = m+1, ncol = m+1)
ya = matrix(data = NA, nrow = m+1, ncol = m+1)
za = matrix(data = NA, nrow = m+1, ncol = m+1)

for(i in 1:(m+1)){
  d2 = z[i]
  g2 = x[i]
  b2 = y[i]

  zz = (1-t)*d1 + t*d2
  xx = ((1-t)*g1)^alpha + (t*g2)^alpha
  yy = (((1-t)*g1)^alpha)*b1 + ((t*g2)^alpha)*b2
  yy = yy/xx
  xx = xx^(1/alpha)

  xa[i,] = xx
  ya[i,] = yy
  za[i,] = zz
}

persp3d(x = xa, y = ya, z = za, col = "red", 
        xlab = "", ylab = "", zlab = "", 
        main = "Skew-Stable Efficient Surface", axes = FALSE)
axes3d(edges = c("x--", "y--", "z-+"))
title3d(xlab = "Gamma", ylab = "Beta", zlab = "Delta")

这导致以下图。我想在z轴旁边的z轴标签“Delta”,因为它与另外两个轴的标签一致。如果我不必像解决方案here那样修复标签的位置,那就太好了

enter image description here

r rgl
1个回答
2
投票

如果轴不在默认边缘,请使用mtext3d绘制它。例如,

persp3d(x = xa, y = ya, z = za, col = "red", 
        xlab = "", ylab = "", zlab = "", 
        main = "Skew-Stable Efficient Surface", axes = FALSE)
axes3d(edges = c("x--", "y--", "z-+"))
title3d(xlab = "Gamma", ylab = "Beta")
mtext3d("Delta", "z-+", line = 2)

产生这个:

screen shot

© www.soinside.com 2019 - 2024. All rights reserved.