plot3d () - Как изменить цвет поверхности оси z на цвет тепловой карты - PullRequest
0 голосов
/ 28 апреля 2018

Graph Plot

На изображении выше поверхность окрашена по оси Z (как тепловая карта). Я использую plot3d ()

plot3d(data$x, data$y, data$z, name = 'Plotly3D graph', type = 'l', axes=F)

Я должен повторить тот же цвет, что и на картинке. Используя приведенный выше код, я могу получить трехмерный квадрат, но я не знаю, где установить цвет оси z так же, как изображение. Пожалуйста, помогите мне в plot3D. Если нужен полный код, выложу в случае необходимости.

Вот пример кода:

data1 <- read.csv(file.choose(),1)

# retrieve age column from csv file 
var1 <- data1$age

z1 <- rep(1, times=length(var1))

plot3d(var1, length(var1), z1, type="l", xaxt='n', yaxt='n', xlab="Jitter in 
ns", ylab="Counts", size=0.05,expand=0.75, col=color[zcol],
ticktype="detailed", zlab="")

1 Ответ

0 голосов
/ 28 апреля 2018

Вот одна версия, использующая функцию из одного из ответов на Как мне сгенерировать отображение из чисел в цвета в R? .

# A function based on Dave X's answer to the colour mapping question
map2color <- function(x, pal, limits = range(x)){
  pal[findInterval(x, seq(limits[1], limits[2], length.out = length(pal) + 1), 
                   all.inside=TRUE)]
}

persp3d(volcano, col = map2color(volcano, rainbow(100)))

Создает это изображение:

enter image description here

Чтобы получить сплошные края («шторы» в plot3D), просто окружите данные дополнительными строками и столбцами минимального значения. Например,

m <- min(volcano)
volcano2 <- cbind(m, rbind(m, volcano, m), m)

Чтобы края выглядели плоскими, вам нужно добавить значения x и y, чуть-чуть меньше оригинальных:

x <- c(0.9999, 1:nrow(volcano), nrow(volcano) + 0.0001)
y <- c(0.9999, 1:ncol(volcano), ncol(volcano) + 0.0001)
persp3d(x, y, volcano2, col = map2color(volcano2, heat.colors(100)))

Я переключил палитру на heat.colors только для разнообразия.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...