當使用circlize
軟件包中的chordDiagram()
函數時,我需要一些幫助來解決返回的錯誤消息。錯誤'選擇了未定義的列' - R中的和絃圖(circlize包)
我正在與漁業登陸。漁船在一個港口(主港口PORT_DE
)開始他們的旅程,並將他們的捕獲物(在這種情況下爲扇貝)落在另一個港口(登陸港口PORT_LA
)。我正在嘗試使用circlize
程序包繪製一個和絃圖來顯示端口之間的着陸流量。我有161個獨特的端口,端口名稱被存儲爲character
字符串。
在調用chordDiagram()
函數繪製和絃圖之前,我將相關列存儲在一個虛擬對象(m
)中。
# Store relevant column
m <- data.frame(PORT_DE = VMS_by_trips$PORT_DE_Label,
PORT_LA = VMS_by_trips$PORT_LA_Label,
SCALLOP_W = VMS_by_trips$Trip_SCALLOP_W)
head(m)
# PORT_DE PORT_LA SCALLOP_W
# 1 Arbroath Arbroath 2.147143
# 2 Eyemouth Aberdeen 8.791970
# 3 Buckie Aberdeen 2.025833
# 4 Montrose Aberdeen 8.268540
# 5 Aberdeen Aberdeen 1.358286
# 6 Peterhead Aberdeen 0.797500
然後我使用dcast()
創建一個鄰接矩陣並重命名行。
require(reshape2)
m <- as.matrix(dcast(m, PORT_DE ~ PORT_LA, value.var = "SCALLOP_W", fun.aggregate = sum))
dim(m) #adjecency matrix represents port pairs
#[1] 153 138
row.names(m) <- m[,1]
m <- m[,2:dim(m)[2]]
class(m) <- "numeric"
最後,我打電話給劇情功能chordDiagram()
。
library(circlize)
chordDiagram(m)
不幸的是,這會產生一條錯誤消息。
Error in `[.data.frame`(df, c(1, 2, 5)) : undefined columns selected
如果我用數字替換行名和列名,函數將運行,並返回正確的圖。
row.names(m) <- 1:153
colnames(m) <- 1:137
任何想法如何運行實際的端口名稱的函數?
我已經嘗試刪除特殊字符,用"_"
下劃線替換" "
空格,保留較少數量的字符,只保留少數端口對。不幸的是,同樣的錯誤不斷出現。任何幫助讚賞。
請注意,自發布此問題以來,我設法創建了需要的 可視化。這是一個鏈接到另一個相關的問題, 其中還包括代碼來調整和絃 圖的各種設置。
Adjust highlight.sector() width and placement - Chord diagram (circlize package) in R
'chordDiagram'將數據幀上工作,以及矩陣..看到'?chordDiagramFromDataFrame' – gjabel
@gjabel感謝您的及時回覆。如果我設法解決我自己,我會看看並回應。 –
我用你附上的代碼試了你的六行數據(用'head(m)'),沒有發生錯誤。你能附上完整的數據集嗎?另一方面,'chordDiagram()'可以直接應用於數據幀,不需要將其轉換爲矩陣。 –