R:“着色”根据另一个变量进行绘图
Posted
技术标签:
【中文标题】R:“着色”根据另一个变量进行绘图【英文标题】:R: "Coloring" plotly plots according to another variable 【发布时间】:2021-10-01 10:47:17 【问题描述】:我正在使用 R 编程语言。我正在尝试在此处复制此 Stack Overflow 帖子中提供的答案:Color surface by variable with plotly in R
假设我有以下“数据框”(“my_grid”):
library(plotly)
library(dplyr)
#create grid and evaluate function
input_1 <- seq(0,100,1)
input_2 <- seq(0,100,1)
input_3 <- seq(0,100,1)
input_4 <- seq(0,100,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
我们可以看到这个数据框的样子:
head(my_grid)
input_1 input_2 input_3 input_4 final_value
1 0 0 0 0 1.000000
2 1 1 1 1 3.381773
3 2 2 2 2 4.493151
4 3 3 3 3 5.151128
5 4 4 4 4 6.589554
6 5 5 5 5 9.324738
问题:我想用变量“input_1”、“input_2”、“input_3”制作一个 3D 曲面图 - 然后根据“final_value”为曲面着色"
plot_ly() %>%
add_trace(data = my_grid, x=my_grid$input_1, y=my_grid$input_2, z=my_grid$input_3, type="mesh3d" )
%>% add_surface(surfacecolor = my_grid$final_value,
cauto=F,
cmax=max(my_grid$final_value),
cmin=min(my_grid$final_value)
)
但这会返回几个错误,例如:
Error: unexpected SPECIAL in "%>%"
Error: unexpected ',' in " cauto=F,"
我尝试了不同的方法来调试这段代码,但我似乎无法弄清楚。有人可以告诉我如何解决这些错误吗?
【问题讨论】:
感谢您的回复...我对数据框比较熟悉,对矩阵不太熟悉...仍在尝试弄清楚。感谢您的帮助! 你能查一下here 【参考方案1】:我修复了您的一些syntax
并将z = my_grid %>% as.matrix()
添加到您的代码中,它现在按预期工作。见下文,
plot_ly() %>%
add_trace(data = my_grid, x=my_grid$input_1, y=my_grid$input_2, z=my_grid$input_3, type='mesh3d') %>%
add_surface(
z = my_grid %>% as.matrix(),
surfacecolor = my_grid,
cauto=F,
cmax=max(my_grid$final_value),
cmin=min(my_grid$final_value)
)
您的第一个错误如下,
foo()
%>% bar()
为了使%>%
能够按预期工作,它必须在结束括号内。
当syntax
得到纠正后,我得到了Error: 'z' must be a numeric matrix
。因此我添加了z = my_grid %>% as.matrix()
。
注意:如果仍然无法正常工作,请发布您的sessionInfo()
,因为在syntax
更正和添加arguments.
后代码对我有效
【讨论】:
非常感谢您的回答!在上图中,x = input_1、y = input_2 和 z = input_3?如果您在此处放大此图片:imgur.com/a/VruwFPg,您将看到 x = 4、y = 100 和 z = 200.356 的点。在原始数据(“my_grid”)中,该点不存在。出现这一点是否有原因?另外,是否可以在悬停文本中包含“my_value”?非常感谢您的帮助!以上是关于R:“着色”根据另一个变量进行绘图的主要内容,如果未能解决你的问题,请参考以下文章