0

我使用 R 的包绘制了下图plot3D。我想将 z 轴标签 ( $ f (y1, y2)) 从轴值上移一点或保持水平。有谁知道我该如何进行?接下来是代码:

library("plot3D")
#Function density probability
library(pbivnorm)
bsb <- function(t1,t2){
  a1 <- sqrt(phi1/2)*(sqrt(((phi1+1)*t1)/(phi1*mu1))-sqrt(((phi1*mu1)/((phi1+1)*t1))))
  a2 <- sqrt(phi2/2)*(sqrt(((phi2+1)*t2)/(phi2*mu2))-sqrt(((phi2*mu2)/((phi2+1)*t2))))
  Phi2 <- pbivnorm(a1, a2, rho, recycle = TRUE)
  b1 <- ((phi1+1)/(2*phi1*mu1))*sqrt(phi1/2)*(((phi1*mu1)/((phi1+1)*t1))^(1/2)+((phi1*mu1)/((phi1+1)*t1))^(3/2))
  b2 <- ((phi2+1)/(2*phi2*mu2))*sqrt(phi2/2)*(((phi2*mu2)/((phi2+1)*t2))^(1/2)+((phi2*mu2)/((phi2+1)*t2))^(3/2))
  fdp <- Phi2*b1*b2
  return(fdp)
}

t1 <- seq(0.001,100,length=30)
t2 <- seq(0.001,20,length=40)
#Parameters
mu1=7
phi1=2
mu2=1
phi2=9
rho=0

z<-outer(t1,t2,bsb) # calculate density values
pmat=persp3D(t1, t2, z,
        main="",xlab="$y_{1}$",ylab="$y_{2}$",zlab="$f(y_{1},y_{2})$",cex.axis=1,cex.lab=1,
        col = "gray10",border = "gray40",
        theta=50, phi=15,
        expand=0.9,
        d=2,
        shade=0.3,
        ticktype="detailed",
        nticks=5,
        facets=FALSE,contour = list(nlevels=10,col="gray35"), zlim= c(-0.1, 0.23), bty = "b2")
text(trans3d(0,7.3,0.173,pmat), "(b)",cex=1,col="black")

图片如下所示:

在此处输入图像描述

我想要以下图片:

在此处输入图像描述

4

1 回答 1

1

问题在于输出窗口的大小。如果你使用更大的,文本会更好看。例如,对于全屏窗口,我从您的原始代码中得到了这个:

在此处输入图像描述

如果您的图形设备支持,您也可以在打开窗口时指定一个较低的dpi值。例如,如果我使用dev.new(dpi = 50)我得到

在此处输入图像描述

我认为没有办法在 中旋转标签persp3D,但您可以绘制没有标签的图,然后使用text添加标签。您还需要增加那一侧的边距大小。例如,

par(mar = c(5.1, 9.1, 4.1, 2.1))
pmat <- persp3D(t1, t2, z, main="", xlab="$y_{1}$", ylab="$y_{2}$", 
    zlab="", cex.axis=1, cex.lab=1,
    col = "gray10", border = "gray40",
    theta=50, phi=15,
    expand=0.9, d=2, shade=0.3,
    ticktype="detailed", nticks=5,
    facets=FALSE, contour = list(nlevels=10,col="gray35"), 
    zlim= c(-0.1, 0.23), bty = "b2")
text(trans3d(0,7.3,0.173,pmat), "(b)", cex=1, col="black")
text(trans3d(0,-3,0.05,pmat), label= "$f(y_{1},y_{2})$", 
     cex=1, col="black", xpd=NA, pos=2)

这给了我:

在此处输入图像描述

于 2018-05-20T16:38:29.330 回答