作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 python 和 igraph 的新手,所以这个问题可能真的很简单。
我有一个包含 128 个节点和 128 个数字的数组,每个数字都在 0 和 1 之间。数字代表节点的一个特征。
我想要两件事:
i
和 j
如果 array[i] == array[j]
必须相同i
之间边的颜色和 j
必须根据此标准给出:
if array[i]<=array[j] -> color_edge[ij] = color_node[i]
else color_edge[ij] = color_node[j]
我尝试了很多东西,我认为主要问题是:
g.vs[i]["color"] = number
不起作用。我必须插入“红色”或“HTML 颜色表示法”类型的字符串。但是,我如何才能将数组中的每个数字关联到一个字符串?g.es["color"]
为所有链接赋予颜色。然而g.es[i]["color"]
不起作用(这里 g
是我的图表,在 g.es[i][".."]
中,i
是边的 ID)。关于第一个问题,我能提出的唯一解决方案是手动为每个节点分配颜色
g.vs[0]["color"] = "red"
.
.
.
g.vs[127]["color"] = "blue"
然后检查 array
上的条件并最终更改两个节点之一的颜色 ( g.vs[i]["color"] = g.vs[j]["color"]
)。但这是一个巨大的时间损失,并且不是通用的方法(如果网络有 10^6 个节点怎么办?)。我在这个 here 中被建议
关于第二个问题,我尝试改编了here中的代码就我而言,但我得到的最好的是两种不同的颜色(而且我不明白它们是如何“选择的两种”)
我该如何解决这个问题?
附言我知道我问了两个问题,但我认为它们非常相关。但是,如有必要,我可以编辑此帖子并创建一个新帖子。
提前致谢。
最佳答案
我在 igrpah 邮件列表上问过这个问题。
如果 array[i] == array[j]
要获得相同颜色的节点 i
和 j
你可以这样做:
id_gen = UniqueIdGenerator()
color_indices = [id_gen.add(value) for value in array]
palette = ClusterColoringPalette(len(id_gen))
colors = [palette[index] for index in color_indices]
graph.vs["color"] = colors
要获得由问题中的标准确定的边缘颜色,您可以这样做
for edge in graph.es:
u, v = edge.tuple
edge["color"] = colors[u if array[u] <= array[v] else v]
我从邮件列表收到的完整答案是 here .
关于 python igraph : nodes and edges color according to a number associated to the node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44086944/
我是一名优秀的程序员,十分优秀!