上述代码的问题在于,您没有指定 跟踪类型 - 您需要传递给 z 参数的内容取决于此规范。
传递参数 x、y、z 表明您想要显示 scatter3d 图 - 您可以通过删除 add_surface() 来测试它:
z <- runif(50,0,1)
y <- runif(50,1,2)
x <- runif(50,3,6)
plot_ly(x = x, y = y, z = z)
给出警告:
未指定跟踪类型:根据提供的信息,“scatter3d”跟踪
似乎合适。阅读有关此跟踪类型的更多信息 ->
https://plot.ly/r/reference/#scatter3d 未指定 scatter3d 模式:
将模式设置为标记阅读有关此属性的更多信息->
https://plot.ly/r/reference/#scatter-mode
另一方面,add_surface() 建议您要显示 3D 曲面图。
你已经提到了volcano example。这种绘图只需要一个数字矩阵来创建绘图(参数 z)。
根据您的示例代码,您混合了两种绘图类型,导致错误消息。
如何避免这种混淆?
如果您查看?plot_ly,就会看到传递给相应跟踪类型的参数“...”的描述(z 是其中之一):
参数(即属性)传递给跟踪类型。看
schema() 用于给定跟踪类型的可接受属性列表
(通过跟踪 -> 类型 -> 属性)。
schema() 是在情节库中定位自己的非常有用的提示。执行以下代码以非常方便的方式浏览不同的绘图跟踪类型及其可用属性:
# install.packages("listviewer")
library(plotly)
library(listviewer)
schema(jsonedit = interactive())
我想这就是你最初想要的:
z <- runif(50,0,1)
y <- runif(50,1,2)
x <- runif(50,3,6)
plot_ly(x = x, y = y, z = z, type = 'mesh3d')