как контролировать прозрачность графика плотности ppp

Я пытаюсь использовать многоуровневые методы для наложения нескольких пространственных объектов spatstat. Все эти объекты предназначены для одного окна. Имею im слой (плотность) из ппп. Я хочу сделать этот слой немного прозрачным, чтобы лучше видеть другие объекты в многослойном объекте.

Как я могу контролировать прозрачность этого графика плотности (im)? Есть ли что-то вроде параметра alpha или прозрачности для plot.im?

ОБНОВИТЬ:

library(spatstat)
pipes=simplenet
plot(pipes)
point_net = as.ppp(runifpoint(10, win = Window(pipes)))
point_surface = density(point_net)
plot(point_surface)
layers= layered(point_surface, point_net, pipes)
plot(layers)

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

Здесь я нарисовал 3 слоя. Как видите, на графике плотности присутствуют очень темно-синий и красный цвета. Да, я могу рисовать линии и точки с разными цветами, чтобы сделать их видимыми, но было бы неплохо сделать простые составные линии, точечные графики и добавить немного прозрачности к графикам плотности (im).

Цель состоит в том, чтобы избежать сложных настраиваемых цветов графика и объяснить коллегам.

Спасибо.


person BKS    schedule 28.07.2017    source источник
comment
Пожалуйста, предоставьте пример кода, чтобы мы могли легко попытаться изменить его, чтобы добавить прозрачности.   -  person Ege Rubak    schedule 29.07.2017
comment
Спасибо за ваш ответ. Я добавил образец кода.   -  person BKS    schedule 29.07.2017


Ответы (1)



Сначала команды из исходного сообщения:

library(spatstat)
pipes=simplenet
point_net = as.ppp(runifpoint(10, win = Window(pipes)))
point_surface = density(point_net)
layers= layered(point_surface, point_net, pipes)
plot(layers)

Для plot.im вам необходимо предоставить другую карту цветов. Это можно сделать двумя способами:

  1. Постройте каждый слой индивидуально, используя add = TRUE для последующих слоев, и предоставьте цветовую карту при печати объекта im.
  2. Передайте список аргументов сюжета, когда вы рисуете объект layered, который вы создали выше.

Мне кажется, что первый вариант проще для иллюстрации, поэтому я сделаю это в первую очередь. Цветовая карта по умолчанию spatstat - это 29-я цветовая последовательность Ковеси (?Kovesi для более подробной информации об этих последовательностях):

def_col <- Kovesi$values[[29]]
head(def_col)
#> [1] "#000C7D" "#000D7E" "#000D80" "#000E81" "#000E83" "#000E85"

Чтобы добавить прозрачности, вы можете использовать to.transparent с выбором fraction для большей / меньшей прозрачности:

def_col_trans <- to.transparent(def_col, fraction = 0.7)
head(def_col_trans)
#> [1] "#000C7DB3" "#000D7EB3" "#000D80B3" "#000E81B3" "#000E83B3" "#000E85B3"

Теперь вам просто нужно использовать это как свою цветовую карту:

plot(point_surface, col = def_col_trans)
plot(point_net, add = TRUE)
plot(pipes, add = TRUE)

Чтобы сделать это с помощью объекта layered, вы должны составить список списков аргументов сюжета (содержащий NULL, если у вас нет дополнительных аргументов):

layer_args <- list(list(col = def_col_trans),
                   list(NULL),
                   list(NULL))
plot(layers, plotargs = layer_args)

person Ege Rubak    schedule 29.07.2017
comment
Большое спасибо. С этим ответом я также узнал об аргументах NULL и картах Ковеси. - person BKS; 30.07.2017