【发布时间】:2019-10-25 12:54:51
【问题描述】:
使用volcano 数据,我想用另一个变量为火山表面着色,这是一个矩阵MatrixForColor,与volcano 大小相同,它只包含1s 和2s(是二进制)。对于MatrixForColor = 1 和MatrixForColor = 2,我想分别涂上蓝色和红色。
受Formatting of persp3d plot 的启发,我设法使用rgl 包中的persp3d 实现了这一点,如下所示:
library(rgl)
color = c("blue", "red")
type = MatrixForColor
persp3d(volcano, theta=50, phi=25, expand=0.75, col=color[type],
ticktype="detailed", xlab="", ylab="", zlab="", axes=TRUE)
得到这个图:
我也尝试使用plotly 来实现这一点(在plotly - different colours for different surfaces 的响应之后进行调整)如下:
library(plotly)
plot_ly(colors = c('blue', 'red')) %>%
add_surface(z = volcano,
opacity = 0.8,
surfacecolor=MatrixForColor,
cauto=F,
cmax=1,
cmin=0
)
但我得到了这个数字:
这不是我想要的,因为在MatrixForColor 之后它没有被着色为红色和蓝色。
任何人知道如何使用plotly 做到这一点?
【问题讨论】:
-
能否也加入
MatrixForColor?