首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >plot_ly中的z参数到底是什么?

plot_ly中的z参数到底是什么?
EN

Stack Overflow用户
提问于 2019-01-30 07:38:35
回答 1查看 3.1K关注 0票数 9

我有三个变量:xyz,我想要生成一个表面图。

代码语言:javascript
运行
复制
z<-runif(50,0,1) 
y<-runif(50,1,2)
x<-runif(50,3,6)
plot_ly(x = ~x, y = ~y, z= ~z) %>% add_surface()

我得到以下错误

Error: `z` must be a numeric matrix

如果没有对应于垂直轴的变量,那么z究竟代表什么?我见过火山的例子,他们用矩阵来生成那个图,但我仍然不确定z矩阵在这个例子中代表什么。

我想要的是有人用z=f(x,y) = x^2 + y^2中的surface功能绘制一个易于理解的3D函数,这样我就可以理解如何根据三个变量生成一个绘图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 09:39:30

上面的代码的问题是,您还没有指定跟踪类型,您需要传递给z参数的内容取决于这个

传递参数x,y,z表示您想要显示scatter3d图??您可以通过删除add_surface()来测试这一点。

代码语言:javascript
运行
复制
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()建议您要显示三维曲面图。你已经提到了火山实例。这种图形只需要一个数字矩阵就可以创建这个图(参数z)。

因此,在示例代码中,您混淆了这两种绘图类型,这将导致错误消息。

如何避免这种混乱?

如果您看一看?plot_ly,就会看到对参数“.”的描述。传递给相应的跟踪类型(z是其中之一):

参数(即属性)传递给跟踪类型。有关给定跟踪类型的可接受属性的列表(通过跟踪->类型的->属性),请参见schema()。

schema()是一个非常有用的提示,可以在巧妙的图书馆中定位自己。执行以下代码,以非常方便的方式浏览不同的跟踪类型及其可用属性:

代码语言:javascript
运行
复制
# install.packages("listviewer")

library(plotly)
library(listviewer)
schema(jsonedit = interactive())

我想这就是你最初想要的:

代码语言:javascript
运行
复制
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')
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54435463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档