问题描述
我使用的是R编程语言。我用R制作了以下3D图:
# set seed for reproducibility
#load libraries
set.seed(123)
library(dplyr)
library(plotly)
#create data
n <- 3
my_grid <- expand.grid(i1 = 1:n, i2 = 1:n)
my_grid$final_value = with(my_grid, sin(i1) + cos(i2) )
#make plot
plot_ly() %>%
add_trace(data = my_grid, x=my_grid$i1, y=my_grid$i2, z=my_grid$final_value, 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)
)
这将生成以下图表:
不出所料,此图看起来非常合乎逻辑:它显示了一个3D表面,其中x=i1,y=i2,z=FINAL_VALUE,并且该图的颜色是&QOOT;FINAL_VALUE&QOOT;。
问题:如果我尝试向网格添加更多数据,然后创建绘图:
#create more data
n <- 50
my_grid <- expand.grid(i1 = 1:n, i2 = 1:n)
my_grid$final_value = with(my_grid, sin(i1) + cos(i2) )
#make plot
plot_ly() %>%
add_trace(data = my_grid, x=my_grid$i1, y=my_grid$i2, z=my_grid$final_value, 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)
)
此图形不仅看起来奇怪,而且悬停文本中的y坐标(1697)显示的值不在原始数据中:
#display histogram of values
par(mfrow=c(1,3))
hist(my_grid$i1)
hist(my_grid$i2)
hist(my_grid$final_value)
Question:在上面的直方图中,值&1697&没有出现在任何变量中。那么,怎么可能在绘制的图表中显示如此大的值呢?
谢谢
推荐答案
首先,您混淆了两种不同的跟踪类型:
一方面mesh3d,另一方面surface痕迹。两者都可以处理x、y、z坐标。 但是,您传递的是一个矩阵,作为曲面轨迹的z论元(没有x和y值)。相应地,将z轴的矩阵的值以及y和x的矩阵的维度(2500 X 3)考虑在内。请同时运行schema()
并导航到:
Object►跟踪►曲面►属性
和
Object►跟踪►网格3D►属性
查看差异。
关于您的数据集,我猜您需要如下内容:
# set seed for reproducibility
#load libraries
set.seed(123)
library(dplyr)
library(plotly)
#create more data
n <- 50
my_grid <- expand.grid(i1 = 1:n, i2 = 1:n)
my_grid$final_value = with(my_grid, sin(i1) + cos(i2) )
#make plot
plot_ly(data = my_grid, x=~i1, y=~i2, z=~final_value, type='mesh3d', intensity = ~final_value, colors = colorRamp(c("blue", "grey", "red")))