【发布时间】:2021-10-01 01:42:41
【问题描述】:
我正在使用 R 编程语言。我有以下功能:
#function
my_function_b <- function(input_1, input_2, input_3, input_4) {
final_value = sin(input_1) + cos(input_2) + input_3 + input_4
}
问题:
-
对于“my_function_b”,我正在尝试为“input_1”、“input_2”、“input_3”和“input_4”的不同值评估“final_value”。例如。 input_1, input_2, input_3, input_4 从 1 到 100,增量为 0.1。
-
然后,我想用“input_1”、“input_2”和“input_3”制作一个 3 维图。
-
接下来,我想在这个图上拟合一个 3 维曲面
-
最后,我想根据“final_input”的值“着色”这个 3 维表面
到目前为止我尝试了什么:
我想出了如何为第二个函数制作一个“网格框架”,然后使用这个“网格框架”评估“final_value”,例如
#create grid and evaluate function
input_1 <- seq(0,100,0.1)
input_2 <- seq(0,100,0.1)
input_3 <- seq(0,100,0.1)
input_4 <- seq(0,100,0.1)
my_grid <- data.frame(input_1, input_2, input_3, input_4)
my_grid$final_value = sin(input_1) + cos(input_2) + input_3 + input_4
但我不确定这是否是解决这个问题的最佳方法。现在,当我尝试绘制结果时,这会产生问题,例如
#make a 3d plot for two of the inputs and the output, and fit surface over the plot
persp(my_grid$input_1, my_grid$input_2, my_grid$final_value)
Error in persp.default(my_grid$input_1, my_grid$input_2, my_grid$final_value) :
invalid 'z' argument
备选方案 #2:不起作用
library(plotly)
a = my_grid[,c(1,2,5)]
fig <- plot_ly(a = ~as.matrix(a))
fig <- fig %>% add_surface()
Error: Must supply `z` attribute
备选方案 #3:不起作用 - 创建一个空图
plot_ly() %>%
add_trace(data = my_grid, x=my_grid$input_1, y=my_grid$input_2, z=my_grid$final_value, type="mesh3d" )
问题:有人可以告诉我怎么做吗?这可以使用“lattice”或“rsm”库来完成吗?或者可以按照我建议的方式完成吗?
谢谢
【问题讨论】:
标签: r function plot plotly data-visualization