簡體   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