繁体   English   中英

将带有斜体的轴标签与 R rgl package 中的轴平行

[英]Putting axis labels with italics parallel to axes in R rgl package

我正在尝试使用 R ZEFE90A8E604A7C840E88D'rglD6. 我想让所有轴标签与轴平行,但 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')

这就是我尽我所能尝试 position 轴后得到的结果。

图1.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')

我完全失去了轴标签。

图2.png

我花时间搜索示例和文档,但找不到任何方法来更改轴标签的方向或使用斜体。 这是我第一次使用 rgl package,感谢您的帮助!

新编辑:

感谢 user2554330 的回答,标签可以包含斜体,但标签仍然远离轴。 以下两个代码都可以工作并生成此图形(我可以在交互式 window 中旋转图形,但在任何时候所有标签都不会与每个轴对齐)。

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')

图3.png

如果我也可以在其中一个角处从 0 开始制作所有三个轴,那将是理想的,但同样,我无法通过旋转图形来实现。

问题是您没有为标签使用字符或表达式向量。 您需要使用expression() ,因为substitute()产生一种语言 object (它是表达式向量的一个元素)。 (使用您的原始代码,我收到错误Error in rep(text, len = newlen): attempt to replicate an object of type 'language'不要忽略错误消息!)

例如,

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)')

如果你真的需要使用substitute (例如在标签中放置一个值),那么将它包装在as.expression()中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM