colors - 将颜色属性添加到 NetworkX 上的节点以导出到 Gephi

标签 colors attributes visualization networkx gephi

我正在使用 NetworkX 制作图表以导出以使用 Gephi 进行可视化。我一直在向图中的节点添加各种属性,没有问题,直到我尝试添加颜色。有谁知道如何使用 networkx 导出带有“彩色”节点的图形? (我一直在写一个 gexf 文件,但只要它与 Gephi 兼容,我不在乎它是否是另一种格式。)

这是我制作图表的代码:

def construct_weighted_graph(nodes, distance_dict, weighting_function, color = True):

  G = nx.Graph()
  #nodes automatically added when edges added. 
  for sequence in nodes: #loop through and add size attribute for num of sequences
    G.add_node(sequence)
    G.node[sequence]['size'] = distance_dict[sequence][1] #size represented by the node
    if color:
        G.node[sequence]['color'] = (0,1,0)
  for i_node1 in range(len(nodes)):
    dist_list = distance_dict[nodes[i_node1]][-2] #list of distances
    for i_node2 in range(i_node1+1, len(nodes)):
        G.add_edge(nodes[i_node1], nodes[i_node2], 
                   weight = weighting_function(dist_list[i_node2]))
  return G

这不是我对颜色的确切要求,因为不同的节点被分配了不同的颜色,但这是基本思想。

最佳答案

我遇到了完全相同的问题。在 NetworkX 中设置着色的正常方法不会导出为 GEXF 格式。通过阅读 NetworkX 和 GEXF 文档的导出代码,我找到了如何正确导出到 GEXF 并进而导入到 Gephi。

如果着色遵循 GEXF 的相同结构,则 NetworkX 会导出着色。必须将数据添加到图形内的节点。因此,您向节点添加了一个代表可视化的关键“viz”。您将 'viz' 设置为另一个字典,在其中添加一个键 'color',然后依次添加一个包含键 'r'、'g'、'b' 和 'a' 的值的字典。

我做了一个非常简单的例子来演示解决方案:

import networkx as nx
""" Create a graph with three nodes"""
graph = nx.Graph()
graph.add_node('red')
graph.add_node('green')
graph.add_node('blue')
""" Add color data """
graph.node['red']['viz'] = {'color': {'r': 255, 'g': 0, 'b': 0, 'a': 0}}
graph.node['green']['viz'] = {'color': {'r': 0, 'g': 255, 'b': 0, 'a': 0}}
graph.node['blue']['viz'] = {'color': {'r': 0, 'g': 0, 'b': 255, 'a': 0}}
""" Write to GEXF """
# Use 1.2draft so you do not get a deprecated warning in Gelphi
nx.write_gexf(graph, "file.gexf", version="1.2draft")

这会将带有红色、绿色和蓝色节点的图形导出到 GEXF。

您必须更改您尝试将颜色设置为的示例:
if color:
    G.node[sequence]['viz'] = {'color': {'r': 0, 'g': 1, 'b': 0, 'a': 0}} # line changed
for i_node1 in range(len(nodes)):

关于colors - 将颜色属性添加到 NetworkX 上的节点以导出到 Gephi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28522155/

相关文章:

colors - 是否可以自定义终结者的提示/主机名(用户@域)颜色?

jsp - 如何从另一个 servlet 检索 session 属性?

c# - 为什么同一属性的两个不同实例在这里相等?

formatting - 如何可视化或格式化差异/补丁文件?

css - rgba(0,0,0,0) 和透明有什么区别?

java - 在字符串中的颜色之间旋转

java - 使用mapTree集合并需要更多颜色

java - 样式 ="display: none"属性在 JTextPane 中不起作用

java - 生成Java类层次图的应用

r - R 中的流图?