python gravis库实现图形数据可视化实例探索
作者:小寒聊python
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库的资料请关注脚本之家其它相关文章!