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

如何从Dagitty导出GML格式DAG并导入dowhy?

从Dagitty导出GML并在DoWhy/NetworkX中可视化的步骤

1. 从Dagitty导出GML格式因果图

  • 打开Dagitty网页版,拖拽节点构建你的因果图(按需添加边、标注变量名称)
  • 点击界面顶部的「Export」按钮,选择「GML」选项
  • 复制弹出窗口里的GML文本,将其保存为后缀为.gml的本地文件(比如命名为causal_graph.gml)

2. 在DoWhy中导入GML图并可视化

首先确保安装了依赖包:

pip install dowhy networkx matplotlib

编写代码导入并可视化:

import dowhy
from dowhy import CausalModel
import networkx as nx
import matplotlib.pyplot as plt

# 加载本地GML文件
causal_graph = nx.read_gml("causal_graph.gml")

# 初始化DoWhy因果模型(替换为你的数据集和变量名)
model = CausalModel(
    data=your_dataset,
    treatment="your_treatment_var",
    outcome="your_outcome_var",
    graph=causal_graph
)

# 可视化因果图
model.view_model()
plt.show()

说明:model.view_model()基于NetworkX生成图结构,调用plt.show()即可显示可视化结果。

3. 用NetworkX直接可视化GML图

如果只想单独查看GML图的结构,可直接用NetworkX的绘图功能:

import networkx as nx
import matplotlib.pyplot as plt

# 加载GML文件
g = nx.read_gml("causal_graph.gml")

# 选择布局算法(spring_layout是常用的力导向布局,seed参数保证布局固定)
pos = nx.spring_layout(g, seed=42)

# 绘制图元素
nx.draw_networkx_nodes(g, pos, node_size=800, node_color="#2ca02c")
nx.draw_networkx_edges(g, pos, width=2, edge_color="#7f7f7f")
nx.draw_networkx_labels(g, pos, font_size=14, font_weight="bold")

# 隐藏坐标轴
plt.axis("off")
plt.tight_layout()
plt.show()

补充:关于GML格式

GML(Graph Modeling Language)是一种纯文本格式,用于描述图的节点、边及其属性,NetworkX原生支持GML的读写,这也是DoWhy能直接兼容GML图的核心原因——DoWhy的因果图依赖NetworkX的图结构实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:30