2017-06-18 31 views
0

我想将3d线添加到3d plot_ly曲面图。当我不在plot_ly调用中添加add_lines()函数时,它看起来很好。只要我添加add_lines,图形就会变得混乱,并且不会添加3d线图。我正在积极使用4.7.0。R:Plot_ly带跟踪线的3d图形

library(plotly) 
m_x = seq(-2, 2, .01) 
m_y = seq(-2, 2, .01) 
df = expand.grid(m_x, m_y) 
df['matrix'] = exp(-(df$Var1^2+df$Var2^2)) 
m_z = matrix(df$matrix, nrow = length(m_x), ncol = length(m_y)) 
m_df = list(m_x, m_y, m_z) 

x1 = seq(-2, 0, by=0.0202) 
y1 = runif(100, min=-0.03,max=0.03) 
z1 = exp(-(x1^2+y1^2)) 
df = data.frame(x1, y2, z2) 
names(df) <- c("df_x", "df_y", "df_z") 


colors = c("Blue", "Cyan", "Green", "Yellow", "Orange", "Red") 
p1 <- plot_ly(x = m_df[[1]], y = m_df[[2]], z = m_df[[3]], 
       colors = colors, color = m_df[[3]]) %>% add_surface() %>% 
    add_lines(x = df$df_x, y = df$df_y, z = df$df_z, data = df, 
      line = list(color = 'red', width = 1)) %>% 
    layout(title = "Hike_Example", 
     scene = list(aspectratio = list(x = 4, y = 4, z = 1))) 

p1 
+0

在'data.frame(X1,Y2,Z2)''对象和y2''z2'没有定义 –

回答

1

这里是3D曲线的曲面代码。
我使用add_trace代替add_lines绘制了3D线。

library(plotly) 
m_x = seq(-2, 2, .01) 
m_y = seq(-2, 2, .01) 
df = expand.grid(m_x, m_y) 
df['matrix'] = exp(-(df$Var1^2+df$Var2^2)) 
m_z = matrix(df$matrix, nrow = length(m_x), ncol = length(m_y)) 
m_df = list(m_x, m_y, m_z) 

x1 = seq(-2, 0, by=0.0202) 
y1 = runif(100, min=-0.03,max=0.03) 
z1 = exp(-(x1^2+y1^2)) 
df = data.frame(x1, y1, z1) 
names(df) <- c("df_x", "df_y", "df_z") 

colors = c("Blue", "Cyan", "Green", "Yellow", "Orange", "Red") 
p1 <- plot_ly(x = m_df[[1]], y = m_df[[2]], z = m_df[[3]], 
       colors = colors, color = m_df[[3]]) %>% add_surface() %>% 
    add_trace(x = ~df_x, y = ~df_y, z = ~df_z, data = df, 
      type="scatter3d", mode="lines", 
      line = list(color = "red", width = 4)) %>% 
    layout(title = "Hike_Example", 
     scene = list(aspectratio = list(x = 4, y = 4, z = 1))) 

p1 

enter image description here

+0

当我做add_trace,它看起来像它在创建两个colorbars我的情节(一个用于3D地图,另一个用于散点图)。它们也是不同大小的颜色条。有没有办法忽略add_trace()颜色条? – Mike

+0

@Mike我看过你的照片了。这很奇怪,在我的Windows7 PC上用R 3.3.3和plotly_4.5.6我没有这个问题。尝试在'add_trace'和/或'plot_ly'中添加'showscale = FALSE'选项。让我知道。 –

+0

将'showscale = False'添加到'plot_ly'声明中,谢谢! – Mike