You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook中自动将JanusGraph图导出至Excel?

JanusGraph图图像自动化导出方案

方法1:Gremlin提取数据+可视化库生成保存

先通过Gremlin拉取JanusGraph的节点和边数据,再用NetworkX结合Matplotlib构建可视化并导出图片:

  • 第一步:查询图数据
from gremlin_python.process.anonymous_traversal import traversal
from gremlin_python.driver.driver_remote_connection import DriverRemoteConnection

# 连接JanusGraph实例
g = traversal().withRemote(DriverRemoteConnection('ws://localhost:8182/gremlin','g'))

# 获取节点属性(按需调整属性字段)
nodes = g.V().valueMap(True).toList()
# 获取边的起点、终点及标签信息
edges = g.E().project('source', 'target', 'label').by(outV().id()).by(inV().id()).by(label()).toList()
  • 第二步:构建可视化并保存
import networkx as nx
import matplotlib.pyplot as plt

# 初始化有向图
G = nx.DiGraph()

# 批量添加节点
for node in nodes:
    node_id = node['id']
    G.add_node(node_id, **{k:v[0] for k,v in node.items() if k != 'id'})

# 批量添加边
for edge in edges:
    G.add_edge(edge['source'], edge['target'], label=edge['label'])

# 绘制并保存图像
plt.figure(figsize=(15,10))
pos = nx.spring_layout(G, seed=42)  # 固定布局种子保证一致性
nx.draw(G, pos, with_labels=True, node_size=4000, font_size=12, node_color='#42b9f5')
nx.draw_networkx_edge_labels(G, pos, edge_labels={(u,v):d['label'] for u,v,d in G.edges(data=True)})

# 保存为高清PNG
plt.savefig('janusgraph_full_graph.png', dpi=300, bbox_inches='tight')
plt.close()

方法2:调用可视化插件API导出

如果你的JanusGraph部署了官方或第三方可视化插件(如Gremlin Server的可视化扩展),可以直接通过HTTP请求触发导出:

import requests

# 替换为实际可视化服务地址与查询语句
export_params = {
    'query': 'g.V().hasLabel("user").limit(30)',
    'format': 'png',
    'layout': 'force-directed'
}
response = requests.post('http://localhost:8183/export', json=export_params)

# 写入文件
with open('target_subgraph.png', 'wb') as f:
    f.write(response.content)

注意:需提前确认可视化插件已启用并配置正确,查询范围不宜过大,避免超时或内存溢出。

方法3:捕获Notebook渲染的图像

如果Notebook中已能直接渲染图(比如通过gremlin-python的内置可视化方法),可以用剪贴板捕获工具直接保存:

from PIL import ImageGrab

# 先执行你的图可视化代码,比如:
g.V().limit(15).plot()

# 捕获剪贴板中的图像并保存
captured_img = ImageGrab.grabclipboard()
if captured_img:
    captured_img.save('notebook_graph.png', 'PNG')

注:此方法依赖系统剪贴板,跨平台兼容性一般,适合小范围图的快速导出。

内容的提问来源于stack exchange,提问作者dhughes20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:12:34