rgl包中plot3d图例的说明

3

我是R语言的新手,所以即使这个问题对你来说有点愚蠢,请耐心听我解释。

我想在rgl图上绘制一个图例,显示颜色的含义(即图形上的彩色球对应的数字)。以下是我编写的构建代码:

plot3d(t$x,t$y,t$z,col=colors,type = 's', size=4,
       xlim=8, ylim=8, zlim=8, image=TRUE, legend=TRUE, lty=1, cex=0.5)

我在互联网上搜遍了所有地方,但是我找不到如何在‘RGL’图上放置图例的方法。每个地方都说如何在使用‘graphics’包中的‘plot’函数绘制的图形上放置图例。此外,我还尝试了以下代码(除上面提到的代码之外):

plot3d(t$x,t$y,t$z,col=colors,type = 's', size=4,xlim=8,ylim=8,zlim=8)
legend(100,100,c("Zero",
                 "Between 1 and 10","Between 10 and 25",
                 "Between 25 and 50","Between 50 and 70",
                 "More than 70","Other"),
         lty=c(l,l,l,l,l,l,l), lwd=c(2.5,2.5,2.5,2.5,2.5,2.5,2.5),
         col=c("White", "Red", "Orange", "Yellow", "Green", "Blue", "Magenta"))

我得到了以下输出:Error in strwidth(legend, units = "user", cex = cex, font = text.font) : plot.new 尚未被调用 请告诉我如何解决它。谢谢。

我不熟悉rgl包,但你的第二次尝试失败并显示错误信息是有充分理由的。你正在“混合”多个图形API。R有三个主要的图形库:基本图形(如plot等)、lattice和ggplot2,更不用说其他特殊用途的库,例如rgl。虽然这些库有时会共享一些组件,但它们通常基于非常不同的原则,并且不能互操作。例如,legend()属于基本图形,并且仅适用于注释现有的绘图[由基本图形创建]。 - mjv
这就解释了信息:“基本图形”在说“我无法注释任何东西,因为尚未创建新的绘图(由plot.new创建)”。现在,我不确定rgl是否使用类似的系统,即首先创建一个图,然后注释它(带有图例、标题、额外线条等),而不是要求所有注释都在绘图创建调用时引入。也许您可以查看文档,并以此特定的见解来找出注释是在初始绘图中创建还是之后添加的(然后找到相关的API调用和/或选项)。 - mjv
感谢 @mjv 的解释。 - Joe Roth
1个回答

2

您可以使用legend3d()向rgl绘图添加图例。


据我所见,它完全回答了这个问题。作者混淆了基础图形和rgl,但实际上只是缺少了正确的命令。 - Lars Lau Raket

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接