如何控制ppp密度图的透明度

时间:2017-07-28 11:33:56

标签: spatstat

我正在尝试使用分层方法来覆盖几个spatstat空间对象。所有这些对象都用于同一窗口。我有一个来自ppp的im层(密度)。我想让这个图层有点透明,以便更好地了解分层对象中的其他对象。

如何控制此密度图(im)的透明度? plot.im是否有像alpha或透明度参数的东西?

更新:

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)

enter image description here

在这里,我绘制了3层。正如您所看到的,密度图具有非常暗的蓝色和红色。是的,我可以使用不同的颜色绘制线条和点以使它们可见,但是做简单的堆积线,点图并为密度(im)图添加一点透明度会很好。

目的只是为了避免复杂的自定义绘图颜色并向同事解释。

谢谢。

1 个答案:

答案 0 :(得分:0)


首先是原帖的命令:

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对象时,传递一个绘图参数列表 已创建以上。
  3. 我发现第一个选项更容易说明,所以我会这样做 第一。 spatstat的默认颜色图是第29个Kovesi颜色 序列(?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)