Search code examples
rspatstat

Show all symbols in legend in spatstat


I'm plotting a forest with trees as in the sample data lansing in spatstat. My code is as in this example:

plot(lansing, cols=rainbow(length(unique(lansing$marks))),
         leg.args=list(y.intersp = .5, cex = .2, pt.cex = .2))

But I have 14 tree species, so I receive the warning that only 10 are shown in the symbol map. Is there a way to show them all? I tried different ways, e.g. y.intersp, which brought no error, but also no response.

Any help is appreciated. Thank you!


Solution

  • The legend in plot.ppp() is also called a symbolmap and the plotting of the legend is done by plot.symbolmap() which defaults to only plotting 10 types of points. You can override it by setting nsymbols = 14. To set this argument from plot.ppp() you can use the argument leg.args:

    library(spatstat)
    X <- rmpoint(100, win = owin(), types = letters[1:14])
    s <- plot(X, leg.args = list(nsymbols = 14))
    

    The return value of plot.ppp() is the symbolmap used so you can reuse the same symbolmap in another plot. You can also plot the symbolmap itself:

    plot(s, main = "", vertical = TRUE)
    #> Warning: Only 10 out of 14 symbols are shown in the symbol map
    

    plot(s, nsymbols = 14, main = "", vertical = TRUE)