r plotly 3d曲面图问题

Posted

技术标签:

【中文标题】r plotly 3d曲面图问题【英文标题】:r plotly 3d surface plot issue 【发布时间】:2017-02-08 13:39:15 【问题描述】:

我正在尝试根据这些plotly examples 绘制 3d 曲面图

当我在我的数据集上尝试这些示例时

 test_plotly =   structure(list(Age = c(82L, 82L, 83L, 83L, 83L, 81L,  
       81L, 
    81L, 79L, 80L, 82L, 78L, 78L, 79L, 78L, 80L, 79L, 77L, 77L, 77L, 
    77L, 78L, 76L, 77L, 77L, 78L, 77L, 76L, 83L, 79L, 76L, 84L, 75L, 
    75L, 77L, 74L, 74L, 75L, 74L, 74L, 73L, 73L, 74L, 81L, 84L, 73L, 
    72L, 73L, 71L, 71L, 73L, 72L, 79L, 72L, 71L, 76L, 72L, 75L, 73L, 
    71L, 70L, 79L, 69L, 70L, 70L, 70L, 77L, 69L, 69L, 68L, 69L, 73L, 
    69L, 69L, 74L, 68L, 69L, 70L, 74L, 68L, 68L, 68L, 68L, 68L, 68L, 
    80L, 69L, 72L, 80L, 80L, 81L, 81L, 67L, 66L, 67L, 78L, 77L, 67L, 
    67L, 81L), BMI = c(32.88, 30.79, 30.08, 30.08, 30.08, 30.08, 
    30.08, 30.08, 36.86, 36.86, 32.33, 43.17, 43.17, 26.89, 25.15, 
    24.59, 33.98, 27.83, 34.66, 33.81, 29.47, 23.54, 23.54, 30.29, 
    43.21, 33.03, 20.62, 41.41, 37.88, 25.58, 26.08, 31.18, 27.78, 
    23.35, 25.42, 27.75, 27.75, 28.83, 27.68, 27.14, 29.13, 27.23, 
    27.75, 25.25, 28.79, 34.46, 30.93, 22.57, 19.06, 27.81, 33.35, 
    28.63, 36.11, 37.94, 31.89, 31.23, 38.65, 23.39, 31.13, 31.13, 
    24.07, 27.01, 32.78, 37.82, 31.98, 28.77, 27.52, 32.88, 26.17, 
    46.24, 32.09, 32.78, 25.4, 32.72, 31.21, 29.13, 45.85, 27.99, 
    36.33, 32.21, 35.97, 28.88, 26.12, 26.31, 32.61, 32.08, 36.58, 
    31.53, 42.84, 42.84, 42.84, 42.84, 31.68, 54.27, 30.26, 29.33, 
    29.33, 31.53, 32.66, 36.82), Task_Completion_Time = c(25L, 
    19L, 25L, 38L, 38L, 25L, 38L, 38L, 16L, 16L, 32L, 39L, 49L, 33L, 
    9L, 20L, 29L, 25L, 46L, 27L, 24L, 24L, 24L, 18L, 52L, 23L, 20L, 
    31L, 45L, 27L, 24L, 10L, 18L, 77L, 40L, 26L, 10L, 37L, 39L, 21L, 
    11L, 26L, 23L, 39L, 31L, 13L, 44L, 20L, 40L, 30L, 24L, 11L, 30L, 
    28L, 34L, 26L, 53L, 16L, 10L, 10L, 22L, 15L, 32L, 50L, 52L, 18L, 
    27L, 21L, 36L, 23L, 17L, 20L, 34L, 27L, 47L, 38L, 47L, 53L, 48L, 
    21L, 15L, 19L, 45L, 20L, 11L, 35L, 27L, 17L, 30L, 88L, 30L, 88L, 
    18L, 41L, 24L, 25L, 25L, 40L, 19L, 16L)), .Names = c("Age", 
    "BMI", "Task_Completion_Time"), class = c("data.table", 
    "data.frame"), row.names = c(NA, -100L))

我收到一个错误

Error in function_list[[k]](value) : 
  could not find function "add_surface"

我能做的最好的就是下面这样的事情

plot_ly(z = as.numeric(test_plotly$Age), y = as.numeric(test_plotly$Task_Completion_Time), x = as.numeric(test_plotly$BMI))

但这很混乱,不像情节表面情节的例子。

不知道我错过了什么,非常感谢任何有关解决此问题和生成干净的 3d 曲面图的帮助。

【问题讨论】:

【参考方案1】:

add_surface 需要 xy 形成一个网格,z 是该网格上的一个矩阵。 在不确切知道您的数据是什么以及您想做什么的情况下,我只能猜测该怎么做:

library(akima)

# interpolate data onto grid
test_plotly <- with(test_plotly, interp(Age, BMI, Task_Completion_Time,
                                        duplicate = "mean"))

# plot surface over grid
plot_ly(x = test_plotly$x, y = test_plotly$y, z = test_plotly$z,
        type = "surface")

会给你

【讨论】:

以上是关于r plotly 3d曲面图问题的主要内容,如果未能解决你的问题,请参考以下文章

在 R 时间内为系列数据绘制 3D 曲面图

如何转换 Excel 导入的数据以使用 Plotly 3D 曲面图?

使用 Plotly 绘制动画 3D 曲面图

Plotly:如何更改 3D 曲面图的配色方案?

在 Plotly 中创建 3D 曲面图

R语言plotly可视化:plotly可视化回归面(plane)使用mesh3d和add_surface实现三维回归曲面