complete_beginer
complete_beginer

Reputation: 1

How to set showing space in plotly

Is there any way to set the view and axes so that in my plotly animated 3D graph I can see a specific space and in this space the graph is moving? I'm trying to do an animation which shows how a detector works but right now when i play my animation the view and axes change along with the graph. I know that I can change the range of the axis but somehow it didn't change anything in my output or maybe i was doing something wrong. Here is my code:

library(plotly)
Sx <- matrix()
Sy <- matrix()
Sz <- matrix()
N <- 360
u = seq(0, pi/2, length.out = 30) 
w = seq(0, 2*pi, length.out = N)

datalist = list()

for (i in 1:N) {
  Sx = cos(u) * cos(w[i])
  Sy = cos(u) * sin(w[i])
  Sz = sin(u)

  df <- data.frame(Sx, Sy, Sz, t=i)
  datalist[[i]] <- df
}
data = do.call(rbind, datalist)
plot_ly(data, x=~Sx, y =~Sy, z=~Sz, frame=~t, type = 'scatter3d', mode = 'lines')

Upvotes: 0

Views: 51

Answers (1)

ismirsehregal
ismirsehregal

Reputation: 33442

Welcome to stackoverflow!

I'm not sure if I correctly understand your question. However, I think you are looking for a combination of range and aspectratio.

Please check the following:

library(plotly)
Sx <- matrix()
Sy <- matrix()
Sz <- matrix()
N <- 360
u = seq(0, pi/2, length.out = 30) 
w = seq(0, 2*pi, length.out = N)

datalist = list()

for (i in 1:N) {
  Sx = cos(u) * cos(w[i])
  Sy = cos(u) * sin(w[i])
  Sz = sin(u)

  df <- data.frame(Sx, Sy, Sz, t=i)
  datalist[[i]] <- df
}
data = do.call(rbind, datalist)
plot_ly(data, x=~Sx, y =~Sy, z=~Sz, frame=~t, type = 'scatter3d', mode = 'lines') %>%
  layout(scene = list(xaxis = list(nticks = 5, range = c(-1, 1)),
                      yaxis = list(nticks = 5, range = c(-1, 1)),
                      zaxis = list(nticks = 5, range = c(-1, 1)),
                      aspectmode='manual',
                      aspectratio = list(x=1, y=1, z=1)
                      )) %>% animation_opts(frame = 100)

Result

For further informarion please see this.

Upvotes: 1

Related Questions