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

相关文章

  • python manage.py runserver流程解析

    python manage.py runserver流程解析

    这篇文章主要介绍了python manage.py runserver流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 分析解决Python中sqlalchemy数据库连接池QueuePool异常

    分析解决Python中sqlalchemy数据库连接池QueuePool异常

    这篇文章主要来给大家分析sqlalchemy数据库连接池QueuePool的异常,给大家用详细的图文方式做出了解决的方案,有需要的朋友可以借鉴参考下,希望可以有所帮助
    2021-09-09
  • Python异步编程入门教程指南

    Python异步编程入门教程指南

    Python作为一门流行的编程语言,提供了强大的异步编程支持,本文将深入探讨Python异步编程的基础概念、常用库以及实际应用,通过丰富的示例代码,助你更全面地理解和应用异步编程
    2024-01-01
  • Python利用filestools模块实现水印添加

    Python利用filestools模块实现水印添加

    最近发现的这款filestools非标准库其实真正实现添加水印的只要一个函数的调用,一行代码即可完成水印的添加,感兴趣的快跟随小编一起学起来吧
    2022-09-09
  • Python遍历目录中的所有文件的方法

    Python遍历目录中的所有文件的方法

    Pyhton中我们一般使用os.walk生成器来获取文件夹中的所有文件,这里我们就来详细看一下Python遍历目录中的所有文件的方法,包括一个进阶的利用fnmatch模块进行匹配的方法:
    2016-07-07
  • 聊聊python里如何用Borg pattern实现的单例模式

    聊聊python里如何用Borg pattern实现的单例模式

    这篇文章主要介绍了聊聊python里如何用Borg pattern实现的单例模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 分享一个可以生成各种进制格式IP的小工具实例代码

    分享一个可以生成各种进制格式IP的小工具实例代码

    这篇文章主要给大家分享了一个可以生成各种进制格式IP的小工具,利用的语言是python实现的一个小工具,这个小工具对大家的日常使用与开发具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-07-07
  • Python中index()函数与find()函数的区别详解

    Python中index()函数与find()函数的区别详解

    这篇文章主要介绍了Python中index()函数与find()函数的区别详解,Python index()方法检测字符串中是否包含子字符串 str ,如果指定beg开始和end结束范围,则检查是否包含在指定范围内,需要的朋友可以参考下
    2023-08-08
  • Python文件读写6大实用方法小结

    Python文件读写6大实用方法小结

    Python文件读写的6大实用方法涵盖了从基本读取到高级操作的不同场景,本文给大家介绍了是这些方法的具体使用,并通过代码示例介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • python抓取某汽车网数据解析html存入excel示例

    python抓取某汽车网数据解析html存入excel示例

    python抓取某汽车网经销商信息网页数据解析html,这里提供一个示例演示,大家可以根据需要分析自己网站的数据
    2013-12-12

最新评论