【问题标题】:R plotly flat surface in 3d scatterplot3d散点图中的R plotly平面
【发布时间】:2018-06-24 22:34:54
【问题描述】:

我正在尝试向this plot 添加一个平面(请原谅大小,如果我把它做得更大,则文件太大)。表面应平行于地面,第三维为零。它应该通过红点。

要重现的代码:

n.cases <- 240              
n.vars <- 4                
set.seed(26)               
eps <- rnorm(n.vars, 0, 1/4)
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta             

data <- data.frame(y)
data.1.2 <- data[,1:2]
data.1.2$X3 <- integer(nrow(data.1.2))

data.1.2$group = 'First Iteration'

data.1.3 <- data[,1:3]
data.1.3$group = 'Second Iteration'

newdf <- rbind(data.1.2, data.1.3)

library(plotly)

plot_ly(x=newdf$X1, y=newdf$X2, z=newdf$X3, color = newdf$group, colors = c('#BF382A', '#0C4B8E')) %>%
  add_markers() %>%
  layout(scene = list(xaxis = list(title = 'First Dimension'),
                      yaxis = list(title = 'Second Dimension'),
                      zaxis = list(title = 'Third Dimension'),
                      bgcolor = "rgb(244, 244, 248)"))  

我尝试使用add_surface,但到目前为止没有成功。我不明白函数需要什么样的矩阵。我试过了

matrix <- cbind(c(-5,-4,-3,-2,-1,0,1,2,3,4,5), c(-5,-4,-3,-2,-1,0,1,2,3,4,5), c(0,0,0,0,0,0,0,0,0,0,0))

然后通过添加曲面

%>%  add_surface(z=~matrix2)

但这确实以

Error in traces[[i]][[obj]] : 
 attempt to select less than one element in get1index

我想我还不明白矩阵的样子。

谢谢!

【问题讨论】:

    标签: r plot plotly surface r-plotly


    【解决方案1】:

    我认为您正在寻找这样的东西:

    matrix2 <- c(
      c(0,0,0,0),
      c(0,0,0,0),
      c(0,0,0,0),
      c(0,0,0,0)
    )
    dim(matrix2) <- c(4,4)
    
    y <- c(-2,-1,0,1)
    x <- c(-2,-1,0,1)
    rownames(matrix2) <- x
    colnames(matrix2) <- y
    
    
    plot_ly() %>%
      add_markers(data = newdf, x=~X1, y=~X2, z=~X3, color = ~group, colors = c('#BF382A', '#0C4B8E')) %>%
      layout(scene = list(xaxis = list(title = 'First Dimension'),
                          yaxis = list(title = 'Second Dimension'),
                          zaxis = list(title = 'Third Dimension'),
                          bgcolor = "rgb(244, 244, 248)")) %>%  add_surface(z=~matrix2, x = ~x, y= ~y)
    

    【讨论】:

    • 谢谢!不幸的是,表面在两个方向上的范围都在 0 到 5 之间。如何更改它以使其进入负范围?
    • 再次感谢您!但我仍然无法将矩阵移入底片。它总是从 (0,0) 开始。
    猜你喜欢
    • 2021-04-17
    • 2016-11-14
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2018-05-06
    相关资源
    最近更新 更多