2016-09-22 73 views
2

我使用spatstat包和ppp函數基於x-y位置創建樹的空間映射。我已經能夠做到這一點,每個點的大小是基於樹的直徑。我無法做到的,我希望能在這裏找到一些幫助,是創造一個傳奇,讓我能夠展示這些不同的圈子,並且還包括劇情中的6種樹種。下面是使用代碼I'm:ppp圖中的圖例

df <- subset(plots, plots$spp == "DF") # Douglas-fir 

dfx <- as.numeric(as.character(df$x)) 
dfy <- as.numeric(as.character(df$y)) 
dfd <- as.numeric(as.character(df$d)) 

dfp <- ppp(dfx, dfy, window = owin(c(0, 100), c(0, 100)), 
        unitname=c("metres","metres"), marks = dfd) 
par(mar = c(2, 2, 2, 2))           
plot(dfp, main = "", cex = 0.8, markscale = 0.04, 
    bg = rgb(0.1,0.9,0.3,0.5), fg = "black") 

我對每一個物種的類似結構中的情節(WH西部鐵杉和代碼是一樣的......)

感謝

+0

只是爲了澄清:你希望每個物種都被繪製成不同的顏色,然後包括一個連接物種名稱和顏色的圖例? –

回答

0

首先使用superimpose將所有數據收集到一個對象ppp中。例如,如果你有花旗鬆dfp和西部鐵杉whp然後

X <- superimpose(DF=dfp, WH=whp) 

創建,其中每個點有兩個選擇值,種類和直徑的點模式X。爲了方便起見,更改標誌的列名:

colnames(marks(X)) <- c("diameter", "species") 

接着確定用於直徑積符號映射(沒有繪製任何東西):

dmap <- plot(subset(X, select=diameter), do.plot=FALSE) 

接着挑一組顏色用於不同物種,例如

spec <- levels(marks(X)$species) 
    scol <- c("red", "blue") 
    smap <- symbolmap(inputs=spec, col=scol) 

現在,使用直徑比例尺的地圖繪製在不同顏色的品種:

plot(Window(X), main="The main title") 
    for(i in seq_along(spec)) { 
    sy <- update(dmap, col=scol[i]) 
    Xi <- subset(X, species==spec[i], select=diameter) 
    plot(Xi, add=TRUE, symap=sy) 
    } 

最後繪製兩個符號使用plot(dmap, add=TRUE, xlim=..., ylim=...)等在地圖上你想要的地方dmapsmap

未來這將是自動化的,但它還沒有實現。

+0

[疊加]適用於創建一個獨特的ppp對象。儘管如此,我已經收到[dmap < - plot(subset(X,select = diameter),do.plot = FALSE)]的錯誤消息。錯誤是「在subset.default(X,select = diameter)中的錯誤:參數」subset「丟失,沒有默認值。 –

+0

[疊加]非常適合創建一個獨特的ppp對象。然而,我已經收到[dmap < - plot(subset(X,select = diameter),do.plot = FALSE)]的錯誤消息。錯誤是「在subset.default(X,select = diameter)中的錯誤:參數」subset「丟失,沒有默認值。我嘗試過使用吐痰功能,但也沒有工作。符號映射函數屬於ggplot?我對這一切都有點新意,並對「無法找到符號映射」的錯誤感到困惑。我在sy中也有錯誤:Error update.default(dmap,col = scol [X1i]):需要一個包含調用組件的對象 –

+0

錯誤消息表明spatstat未加載,或者X不是ppp對象。在執行此代碼之前,您需要輸入庫(spatstat)。還要確保在代碼的第三行中使用正確的對象X,如在第一行代碼中創建的。如果它仍然不起作用,請發佈一個簡單的例子。 –