Используя данные volcano
, я хотел бы закрасить поверхность вулкана другой переменной, которая представляет собой матрицу MatrixForColor
того же размера, что и volcano
, и она содержит только 1 и 2 (двоичный).Для MatrixForColor = 1
и MatrixForColor = 2
я хочу раскрасить синий и красный соответственно.
Вдохновленный из Форматирование графика persp3d , мне удалось добиться этого, используя пакет persp3d
из rgl
следующим образом:
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
(адаптивно после отклика от заговор - разные цвета для разных поверхностей ) следующим образом:
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
?