chordDiagram()
在使用包中的函数时,我需要一些关于返回错误消息的帮助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"
最后,我调用 plot 函数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
任何想法如何使用实际端口名称运行该功能?
我已经尝试删除特殊字符," "
用下划线替换空格"_"
,保留较少数量的字符,只保留几个端口对。不幸的是,同样的错误不断出现。任何帮助表示赞赏。
请注意,自从发布这个问题以来,我已经设法创建了所需的可视化。这是另一个相关问题的链接,其中还包括调整和弦图各种设置的代码。