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

 更新时间:2024年02月01日 10:12:12   作者:小寒聊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 库的一些主要特点

  • 易用性,它提供了一个简洁的API来创建和操作图形可视化。

  • 与其他图形库兼容,gravis 可以与其他流行的图形处理库(如 NetworkX、igraph 等)结合使用。这意味着你可以用这些库来创建和处理图形,然后使用 gravis 来进行可视化。

  • 交互性,gravis 生成的图形可视化通常是交互式的,这使用户可以通过缩放、平移、悬停等操作来更好地探索图形。

  • 可定制性,提供了许多定制选项,比如节点和边的样式、布局算法的选择等,使用户可以根据需求调整可视化的外观和行为。

  • 多种输出格式,gravis 支持多种输出格式,包括在 Jupyter Notebook 中直接显示,或者导出为 HTML 文件、图片等。

库的安装

可以直接通过 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库的资料请关注脚本之家其它相关文章!

相关文章

最新评论