使用dc.plot_network无法显示TF与靶标交互箭头的问题
解决decoupler plot_network仅显示节点无交互箭头的问题
可能原因
- 指定的转录因子(TF)在Collectri数据集中无对应靶标记录
- 数据集存在权重为
NaN的无效边,导致绘图函数忽略连接 plot_network未正确识别权重列,或靶标数量设置过高无匹配项
解决方案步骤
1. 验证指定TF的靶标存在性
先确认选中的TF在Collectri数据集中是否有收录的靶标:
# 检查PAX5、EBF1、RFXAP的靶标数量 target_counts = net[net['source'].isin(['PAX5', 'EBF1', 'RFXAP'])].groupby('source').count()['target'] print(target_counts)
若输出中某TF的靶标数量为0,说明该TF在Collectri中无对应靶标,需更换TF或调整数据集。
2. 过滤无效边(去除权重为NaN的记录)
Collectri数据集部分条目可能存在NaN权重,过滤后再绘图:
# 过滤有效边 net_filtered = net.dropna(subset=['weight']) dc.plot_network( net=net_filtered, n_sources=['PAX5', 'EBF1', 'RFXAP'], n_targets=15, node_size=100, s_cmap='white', t_cmap='white', c_pos_w='darkgreen', c_neg_w='darkred', figsize=(5, 5) )
3. 显式指定权重列
虽然plot_network默认使用weight列作为边权重,但显式指定可避免识别错误:
dc.plot_network( net=net, n_sources=['PAX5', 'EBF1', 'RFXAP'], n_targets=15, node_size=100, s_cmap='white', t_cmap='white', c_pos_w='darkgreen', c_neg_w='darkred', figsize=(5, 5), weight_col='weight' # 明确指定权重列 )
4. 调整靶标数量
若指定TF的靶标总数不足15,降低n_targets参数确保有匹配项:
dc.plot_network( net=net_filtered, n_sources=['PAX5', 'EBF1', 'RFXAP'], n_targets=5, # 减少靶标数量 node_size=100, s_cmap='white', t_cmap='white', c_pos_w='darkgreen', c_neg_w='darkred', figsize=(5, 5) )
内容的提问来源于stack exchange,提问作者Sara Perez
相关产品推荐
相关产品推荐

