我正在尝试绘制函数 x^2+y^2 的 3D 图表,并添加等高线以尝试与使用 Matlab 构建的该图具有相同的方面:
但是,我无法在轴中添加轮廓线、网格线和数学符号。这是我使用该函数提供的代码得到的图persp
:
library(rgl)
library(rsm)
# Generate data for the plot
x <- seq(-5, 5, length.out = 25)
y <- seq(-5, 5, length.out = 25)
z <- outer(x, y, function(x, y) x^2 + y^2)
jet.colors <- colorRampPalette( c("blue", "red") )
pal <- jet.colors(100)
col.ind <- cut(z,100)
# Create the plot
persp(x, y, z,
zlab = "Q1(x1,x2)",
xlab = expression(x^2), #not working
ylab = "x1",
theta = 50, phi = 20, expand = 0.5,
ticktype = "detailed",
contour(x, y, z),
col = pal[col.ind])
您的第二个最后一个参数
persp
iecontour(x, y, z)
被解释为一个xlim
参数,因为您没有给它命名。据我所知persp()
不支持在同一调用中添加 2D 注释。您的代码指定了
library(rgl)
,library(rsm)
但据我所知,您没有使用这些包中的任何一个。为了做你想做的事,我可以看到两种方法。第一种方法是使用上述校正绘制绘图,然后使用该
trans3d
函数在其上绘制等高线。由于没有删除隐藏线,因此您需要再次绘制主图以覆盖应该隐藏的线。关于有关轴标签的问题
x^2
:请参阅https://stackoverflow.com/a/23420409/2554330了解使用图形的解决方案lattice
,或找出所需的坐标,然后将text(trans3d(x,y,z, trans), label=expression(x^2))
其放在那里。这是所有这一切的尝试:
创建于 2024-01-29,使用reprex v2.0.2
如果需要,您还可以在重新绘制绘图之前(或之后,如果您希望它们位于绘图之前)添加网格线。
另一种方法使用
rgl
.show2d()
它具有在 3D 场景中的矩形上绘制 2D 绘图的功能。