2013-12-13 49 views
1

我正在使用hist3D繪製3D直方圖,並且想要更改xlab,以便它包含帶有下標的希臘字母。如何在hist3D上打印標籤上的希臘字母?

我用

xlab=expression(theta[1]). 

它不工作,我只是得到的標籤字符串 「[1] THETA」。另一方面,它可以正常工作,只需要經常繪圖命令。

那麼如何才能將下標希臘字母引入hist3D圖?

(hist3D來自PLOT3D格式庫)

+2

你應該添加一個可重複的例子,並提及你使用的軟件包。 – agstudy

+1

函數'hist3D'調用函數'persp'。從'?persp',關於'xlab':'這些必須是字符串;表達式不被接受。' –

+0

謝謝@SvenHohenstein – kloop

回答

0

一種解決方法是使用scatterplot3d

enter image description here

z <- seq(-10, 10, 0.01) 
x <- cos(z)+1 
y <- sin(z)+1 
scatterplot3d(volcano, highlight.3d=TRUE, col.axis="blue", 
          col.grid="gray", main="scatterplot-greeks", pch=21, 
          xlab=expression(theta[1]), 
          ylab=expression(beta[2]), 
          zlab=expression(alpha[3]),cex.lab=1.5) 
+0

我喜歡persp更好,它繪製比這更好的東西...但謝謝。 – kloop

2

hist3D功能不接受軸標籤表達式。一種解決方法是對theta,θ使用Unicode字符。

# example data 
library(plot3D) 
x <- seq(-pi, pi, by = 0.2) 
y <- seq(-pi, pi, by = 0.3) 
grid <- mesh(x, y) 
z <- with(grid, cos(x) * sin(y)) 

hist3D(z = z, x = x, y = y, border = "black", xlab = "θ1") 

這將顯示一個符號THETA,但沒有下標1

enter image description here

1

另一個解決方法是使用text3D函數從同一plot3D包。它接受數學表達式作爲標籤,所以我們可以照常編寫expression(theta[1])。在此解決方法唯一的小問題是要找到

# example data 
library(plot3D) 
x <- seq(-pi, pi, by = 0.2) 
y <- seq(-pi, pi, by = 0.3) 
grid <- mesh(x, y) 
z <- with(grid, cos(x) * sin(y)) 

hist3D(z = z, x = x, y = y, border = "black", ticktype = "detailed", xlab = "", ylab="y", zlab="z") 
text3D(2, -5, 0, labels = expression(theta[1]), add = TRUE, adj = 1) 

我發現2,-5,0是這個例子相當好我們的標籤的合適座標。標籤不像標準標籤那樣旋轉。 enter image description here