在R中,使用包rgl
,我想在plot3d()
中添加点的阴影,如下图所示。
我使用grid3d()
添加了底部网格,但仍然不知道如何添加阴影。如果我绘制相同的点,将第3轴值更改为其最小值(图像中的-100),则绘图区域会自动增加,从而在点和网格之间留下间隙。有没有更好的方法呢?
我认为这个问题很明显,但这里有一个示例代码:
library(rgl)
df <- data.frame(x=rnorm(100),
y=rnorm(100),
z=rnorm(100))
plot3d(df)
grid3d('z')
答案 0 :(得分:5)
将z
设置为最小值的想法失败了,因为rgl
使边界区域略大。但是您可以从网格中获取z
值,然后使用它。您还可以告诉rgl
不要展开边界框以包含新点。这段代码完成了两件事:
library(rgl)
df <- data.frame(x=rnorm(100),
y=rnorm(100),
z=rnorm(100))
plot3d(df)
id <- grid3d('z') # Get id values for grid
gridz <- rgl.attrib(id[1], "vertices")[1,3] # Use the first z value
save <- par3d(ignoreExtent = TRUE) # Ignore points for bbox
with(df, points3d(x, y, gridz, col = "gray"))# Plot the "shadows"
par3d(save) # Restore bbox status
这是我得到的:
答案 1 :(得分:2)