【问题标题】:r igraph edge.lty attribute not working as advertisedr igraph edge.lty 属性没有像宣传的那样工作
【发布时间】:2018-03-30 14:29:05
【问题描述】:

线型属性 lty 在为边的子集设置时似乎不起作用

我已经编辑了我的原始示例,该示例过于简单。感谢 G5W 的初步响应。下面的代码捕获了我遇到的问题。

我有一个顶点对矩阵,我想将每对之间的边的 lyt 值设置为“dotted”(值 2)。如您所见,代码适用于 color 属性,但不适用于 lyt 属性

library(igraph)

m = matrix( c(1, 10, 7, 8), nrow=2,ncol=2,byrow = TRUE) 

g <- graph.ring(10)

E(g)$color = "black"
E(g)$lty = 1
E(g)$width = 1

for(j in 1:nrow(m)){
  E(g)[m[j,1] %--% m[j,2]]$color <- "indianred"
  E(g)[m[j,1] %--% m[j,2]]$label <- "x"
  E(g)[m[j,1] %--% m[j,2]]$width <- 3
  E(g)[m[j,1] %--% m[j,2]]$lyt <- 2
}
plot(g)
E(g)$lty

您知道为什么颜色、宽度和标签属性设置正确,但 lyt 属性设置不正确吗?

plot generated by code above

【问题讨论】:

  • 它不起作用的原因是在您的for 循环中,您犯了与之前相同的错字。该属性应为lty 而不是lyt
  • 我真的很尴尬。谢谢@G5W
  • 每个人都会遇到这种情况。我很高兴能够提供帮助。

标签: r igraph


【解决方案1】:

问题是,如果你只设置一个这样的值,其余的值是未定义的。

g <- graph.ring(10)
E(g)[2]$lty <- 2
E(g)$lty
 [1] NA  2 NA NA NA NA NA NA NA NA

如果您希望大多数边为默认值(type = 1),而只有一个为 type = 2,首先将它们全部设置为 1,然后更改一个边。

E(g)$lty = 1
E(g)[2]$lty <- 2
plot(g)

【讨论】:

  • 谢谢。我编辑了我的问题,因为我提供的示例过于简单。您的建议对于该示例是完全正确的 - 我感谢您
猜你喜欢
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2018-08-24
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
相关资源
最近更新 更多