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

时间:2019-01-30 07:38:35

标签: r-plotly

我有三个变量:$abc = $this->db->query("SELECT Users.firstname, categories.cat_name, Products.pname, Requests.sdealer, Requests.sunit, Requests.sdate, Requests.sstatus FROM Requests INNER JOIN Users ON Requests.sdealer=Users.Id INNER JOIN categories ON Requests.scat=categories.cat_id INNER JOIN Products on Requests.sproduct=Products.pid"); $xyz = $this->db->query("SELECT Stock.Sunit FROM Stocks WHERE Stock.sdealer = (I want data to be fetched through abc)"); xy,我想生成一个曲面图。

z

我收到以下错误

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如果不对应于垂直轴的变量,究竟代表什么?我已经看到了Volcano示例,其中他们使用矩阵来生成该图,但是我仍然不确定z矩阵在该示例中代表什么。

我想要的是某人使用z中的z=f(x,y) = x^2 + y^2功能来绘制一个易于理解的3D功能,例如surface,这样我才能理解如何根据三个变量。

1 个答案:

答案 0 :(得分:2)

上述代码的问题在于,您没有指定跟踪类型-并且需要传递给z参数的内容取决于此规范

传递参数x,y,z建议您显示散点图-您可以通过删除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')