Красочный сюжет с использованием Persp

Я использую "pers "для создания 3D-сюжета. это результат:

persp(TestMatrix ,theta = 30, phi = 30, expand = 0.19,scale=FALSE,shade=0.4,border=NA,box=FALSE)

в моей диаграмме. Я хотел бы изменить цвет непрерывного с синего на красный.

что я должен делать?

ОБНОВИТЬ

Я хотел бы создать диаграмму, как это:

2 ответа

Если вам просто нужна затененная красная кривая, попробуйте добавить colпараметр в вашей функции persp:

persp(TestMatrix, 
      theta = 30, phi = 30, expand = 0.19, scale=FALSE,
      shade=0.4, col="red", border="blue",
      box=FALSE)

График с использованием? Persp Пример данных

Редактировать: Спасибо за ваши изменения, я не был уверен, что вам нужен двухцветный сюжет. Здесь есть вопрос по этой проблеме: Создать 3D-график, окрашенный по оси Z. Вам нужна цветовая матрица, чтобы указать цвета каждого фасета поверхности. Подтипной точкой является вычисление высоты (z) в середине каждого фасета, то есть среднего значения четырех вершин сетки (которые соответствуют значениям z). Приспосабливая ответ для своего графика, решение может быть чем-то вроде этого:

# Color palette (100 colors)
col.pal<-colorRampPalette(c("blue", "red"))
colors<-col.pal(100)
# height of facets
z.facet.center <- (z[-1, -1] + z[-1, -ncol(z)] + z[-nrow(z), -1] + z[-nrow(z), -ncol(z)])/4
# Range of the facet center on a 100-scale (number of colors)
z.facet.range<-cut(z.facet.center, 100)

persp(x, y, z, 
  theta = 30, phi = 30, expand = 0.19, scale=FALSE,
  shade=NA, col=colors[z.facet.range], border="grey80",
  box=FALSE)

введите описание изображения здесь

Отделив часть создания палитры, мы можем реализовать функцию 3D-графики.plot.3d()который принимаетpal.funcв качестве аргумента:

      plot.3d <- function(x, y, z, pal.func, nlevels=50) {
  colors <- pal_func(nlevels)
  z.facet.center <- (z[-1, -1] + z[-1, -ncol(z)] + z[-nrow(z), -1] + z[-nrow(z), -ncol(z)])/4
  z.facet.range <- cut(z.facet.center, nlevels)
  persp(x, y, z, theta = 30, phi = 45, scale=FALSE,
        expand = 0.2, col=colors[z.facet.range], box=FALSE)
} 

x <- seq(-3,3,0.15)
y <- seq(-3,3,0.15)
s <- 1
z <- outer(x, y, function(x,y) 50/s^4/pi*(1-(x^2+y^2)/2/s^2)*exp(-(x^2+y^2)/2/s^2))

plot.3d(x, y, z, pal.func = colorRampPalette(c("blue", "red")))

используя библиотекуGAмы можем получитьmaltlabнравитьсяjetцветовая карта

      library(GA)
plot.3d(x, y, z, pal_func=jet.colors)

Другие вопросы по тегам