【问题标题】:Specify arc color by origin node arcplot {arcdiagram}通过原点 arcplot {arcdiagram} 指定圆弧颜色
【发布时间】:2016-05-24 03:21:51
【问题描述】:

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

红色、蓝色和绿色之前定义为:

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"))) 

【问题讨论】:

  • 颜色是否不应该用引号引起来:setNames(c("red", "red", ... 而不是setNames(c(red, redcol.names 也应该是 color.names?
  • 个人意见,我停止使用 arcplots 是因为 googleVis 包中的 sankey,看看它是否适合你。
  • 1.如上所述,颜色变量红色等之前已经定义,即红色不是“红色” 2. 带有 googleVis 的桑基图看起来很棒。我需要试一试。
  • 上面已经添加了

标签: r igraph arc-diagram


【解决方案1】:

类似这样的:

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() 对您预定义的订单和列向量进行子集化。

【讨论】:

  • 结构命令好像没有忠实再现顺序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多