2013-12-13 48 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