python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python gravis库

python gravis库实现图形数据可视化实例探索

作者:小寒聊python

这篇文章主要为大家介绍了python gravis库实现图形数据可视化实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

python gravis库

今天给大家分享一个神奇的 python 库,gravis

gravis(Graph Visualization Software)是一个用于图形数据可视化的 Python 库。它专注于提供一个简单、高效、可定制的方式来展示和探索图形数据。  

它使用 Python 来准备图形数据并使用 Web 技术 (HTML/CSS/JS) 来呈现图形数据,主要基于 JavaScript 库 d3.js、 vis.js 和 3d-force-graph.js/ Three.js。结果可以显示在 Web 浏览器窗口中、嵌入 Jupyter Notebook 中、导出到独立的 HTML 文件或在 Web 应用程序中作为 HTML 文本使用。还支持以 JPG、PNG 和 SVG 格式导出静态图像。

gravis 库的一些主要特点

库的安装

可以直接通过 pip 进行安装。

pip install gravis

图形生成器

这里,我们使用 nx.dual_barabasi_albert_graph 来生成包含 30 个节点的随机图,然后分别对结点和边添加一些属性。

import uuid
import networkx as nx
def get_new_test_graph():
    NUM_NODES = 30
    p = 0.5
    seed = 1
    test_graph = nx.dual_barabasi_albert_graph(n=NUM_NODES, p=p, seed=seed, m1=2, m2=1)

    # add node properties
    nx.set_node_attributes(test_graph, dict(test_graph.degree()), name='degree')
    nx.set_node_attributes(test_graph, nx.betweenness_centrality(test_graph), name='betweenness_centrality')

    for node, data in test_graph.nodes(data=True):
        data['node_identifier'] = str(uuid.uuid4())
        data['feature1'] = np.random.random()
        data['feature2'] = np.random.randint(0, high=100)
        data['feature3'] = 1 if np.random.random() > 0.5 else 0

    # add edge properties
    for _, _, data in test_graph.edges(data=True):
        data['feature1'] = np.random.random()
        data['feature2'] = np.random.randint(0, high=100)
    
    return test_graph

当我们使用 networkx 绘制图表时,我们得到以下结果。

test_graph = get_new_test_graph()
nx.draw(test_graph)

使用 gravis 画图

import gravis as gv 
gv.d3(
    test_graph, 
    # graph specs
    graph_height=500,
    # node specs
    node_size_data_source="betweenness_centrality",
    use_node_size_normalization=True,
    node_size_normalization_min=15,
    node_size_normalization_max=35,
    show_node_label=True,
    node_label_data_source='node_identifier',
    # edge specs
    edge_size_data_source='feature1',
    use_edge_size_normalization=True,
    edge_size_normalization_min=1,
    edge_size_normalization_max=5,
    # force-directed graph specs
    many_body_force_strength=-500
)

以上就是python gravis库实现图形数据可视化实例探索的详细内容,更多关于python gravis库的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文