r - 通过原点节点指定圆弧颜色 arcplot {arcdiagram}

标签 r igraph arc-diagram

我有一个手动指定节点顺序的弧线图。我本来希望也通过手动指定列表来设置弧线颜色。但是,颜色与节点不对齐:

其中红色、蓝色和绿色先前定义为:

red <- "firebrick1"
green <- "green3"
blue <- "DodgerBlue"

color.names <- setNames(c(red, red, red, red, red,red,red,red,red,red,red,red, blue, blue, blue, blue, blue, blue, blue, blue,  blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue,green, green , green, green ), c("OVB", "OVB-ENV", "OVB-ENV-MO", "OVB-MO", "OVB-MO-ENV", "ENV-MO", "ENV", "ENV-OVB", "ENV-MO-OVB", "MO","MO-ENV","MO-OVB", "intraverbal-tact", "intraverbal", "intraverbal-mand", "intraverbal-tact-mand","intraverbal-mand-tact", "intraverbal-echoic-mand", "intraverbal-echoic", "tact", "tact-mand", "tact-intraverbal", "tact-intraverbal-mand", "mand", "mand-tact", "mand-intraverbal", "mand-tact-intraverbal","echoic-tact", "echoic-intraverbal-mand", "echoic-intraverbal", "echoic-tact-mand","echoic-intraverbal-tact", "echoic-mand","echoic-mand-intraverbal", "echoic-tact-intraverbal","social", "social-physical", "physical-social", "physical"))

longer_order = c("OVB", "OVB-ENV", "OVB-ENV-MO", "OVB-MO", "OVB-MO-ENV", "ENV-MO", "ENV", "ENV-OVB", "ENV-MO-OVB", "MO","MO-ENV","MO-OVB", "intraverbal-tact", "intraverbal", "intraverbal-mand", "intraverbal-tact-mand","intraverbal-mand-tact", "intraverbal-echoic-mand", "intraverbal-echoic", "tact", "tact-mand", "tact-intraverbal", "tact-intraverbal-mand", "mand", "mand-tact", "mand-intraverbal", "mand-tact-intraverbal","echoic-tact", "echoic-intraverbal-mand", "echoic-intraverbal", "echoic-tact-mand","echoic-intraverbal-tact", "echoic-mand","echoic-mand-intraverbal", "echoic-tact-intraverbal","social", "social-physical", "physical-social", "physical"))

有 738 条边。

绘制绘图:

library(arcdiagram)
arcplot(F1, ordering=longer_order, col.arcs = color.names)

是否有类似于 igraph 的 get.edglist() 用于 arcplot 的(唯一)节点列表来绘制图形(来自边列表)? 还有其他方法可以按原点以编程方式添加边缘的颜色吗?

重现数据:

F1 <- structure(c("OVB", "OVB", "OVB", "OVB", "OVB-ENV", "OVB", "OVB","intraverbal-mand", "intraverbal-mand", "mand", "intraverbal","mand", "intraverbal-tact", "intraverbal", "mand-intraverbal","intraverbal-mand", "mand", "physical-social", "physical-social","social-physical"), .Dim = c(10L, 2L), .Dimnames = list(NULL,c("V1", "V2"))) 

最佳答案

类似这样的事情:

longer_order_match  <- order(match(unique(matrix(F1)), longer_order))
color.names_match <- color.names[match(unique(matrix(F1)), longer_order)]

arcplot(F1, ordering = longer_order_match, col.arcs = color.names_match)

我们需要为 ordering =col.arcs = 参数提供与边数相同数量的元素。因此,我们使用 match() 对您的预定义订单和列向量进行子集化。

enter image description here

关于r - 通过原点节点指定圆弧颜色 arcplot {arcdiagram},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403842/

相关文章:

r - 如何为多核处理重写我的 R 代码?

r - 在 R 中,Matlab 中 @ 函数句柄的等价物是什么?

r - 对于其他列中的每个因素级别,按日期时间对数据框进行排序

javascript - d3 圆弧图 - 添加顶部半圆

r - 如何同时提取列表的不同元素

r - 如何将邻接矩阵保存为 CSV 文件?

r - 根据顶点的中心性为顶点着色

具有相同颜色(特征)的R igraph簇节点

javascript - D3 弧线图 : Tooltip on Circle Mouseover Not Displaying