【发布时间】:2021-05-15 11:00:14
【问题描述】:
我正在尝试使用 R 包“rgl”创建 3D 图。我想让所有轴标签与轴平行,但 las = 0 不起作用,并且使用 text3d() 或 mtext3d() 没有运气。是否可以这样做,这取决于您所看到的数字?这是我的代码:
X = c(0, 0.2, 0.4, 0.6, 0.8, 1.0)
Y = c(0, 2, 4, 6, 8, 10)
Z = c(100, 220, 440, 660, 880, 1100)
df = data.frame(X, Y, Z)
#install.packages('rgl')
library(rgl)
# Cannot put axis labels parallel to the axes
plot3d(df$X, df$Y, df$Z, type = 'n', box = F, add = F,
xlab = 'Number of cars (N)',
ylab = 'Size (S)',
zlab = 'Weight (kg)')
plot3d(df$X, df$Y, df$Z, type = 'l', lwd = 2, add = T, col = 'blue')
rgl.snapshot('Figure1.png')
这是我在尝试尽可能好地定位轴后得到的结果。
我什至无法弄清楚这一点,但理想情况下,我想用斜体在括号中制作字母,但它不允许我使用替代,它被忽略了。这是我的代码:
# Cannot use italics in the labels
plot3d(df$X, df$Y, df$Z, type = 'n', box = F, add = F,
xlab = substitute(paste('Number of cars (', italic('N'), ')')),
ylab = substitute(paste('Size (', italic('S'), ')')),
zlab = 'Weight (kg)')
plot3d(df$X, df$Y, df$Z, type = 'l', lwd = 2, add = T, col = 'blue')
rgl.snapshot('Figure2.png')
我完全失去了轴标签。
我花时间搜索示例和文档,但找不到任何方法来更改轴标签的方向或使用斜体。这是我第一次使用 rgl 包,感谢您的帮助!
新的编辑:
感谢 user2554330 的回答,标签可以包含斜体,但标签仍然远离轴。以下两个代码都可以工作并生成此图形(我可以在交互式窗口中旋转图形,但所有标签都不会与每个轴对齐)。
plot3d(df$X, df$Y, df$Z, type = 'n', box = F, add = F,
xlab = expression(paste('Number of cars (', italic('N'), ')')),
ylab = expression(paste('Size (', italic('S'), ')')),
zlab = 'Weight (kg)')
plot3d(df$X, df$Y, df$Z, type = 'l', lwd = 2, add = T, col = 'blue')
rgl.snapshot('Figure3.png')
plot3d(df$X, df$Y, df$Z, type = 'n', box = F, add = F,
xlab = as.expression(substitute(paste('Number of cars (', italic('N'), ')'))),
ylab = as.expression(substitute(paste('Size (', italic('S'), ')'))),
zlab = 'Weight (kg)')
plot3d(df$X, df$Y, df$Z, type = 'l', lwd = 2, add = T, col = 'blue')
rgl.snapshot('Figure3.png')
如果我也可以使所有三个轴在其中一个角处从 0 开始,那将是理想的,但同样,我无法通过旋转图形来实现。
【问题讨论】:
-
可能会将文本转换为精灵。然后它可以旋转,但也会在您放大和缩小时缩放(这可能是您不想要的)。
-
感谢@dww 的帖子。我确实搜索了类似的示例,但没有看到这个,虽然我不够精明,无法解码代码示例...
标签: r special-characters axis-labels rgl