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

固定坐标绘制NetworkX关系图节点偏移、plt.text丢失问题求解

问题原因
  • 节点坐标偏移:你通过isin()筛选国家后,得到的cut['Nation']列顺序和你定义的top_10_list输入顺序不一致,循环绑定坐标时,国家和预设坐标的对应关系发生错位,导致节点位置偏移。
  • 左下角文本消失:Matplotlib默认会根据图中元素的坐标自动调整坐标轴显示范围,3节点场景下所有节点的坐标都比-1.15更靠上,y轴下限被自动拉高,你放置在(-1.15,-1.15)的文本就落在了画布可视范围外,因此消失。
修复方案
  1. 直接建立国家与固定坐标的映射字典,不要依赖列表顺序绑定坐标,避免错位问题。
  2. 手动固定坐标轴的显示范围,确保文本不会落在画布外。
  3. 移除无意义的空列表判断逻辑,优化链式赋值避免Pandas警告。

核心修改后代码片段

# 提前建立国家和坐标的固定映射,可按需补全所有10个国家的对应关系
pos_map = {
    "USA": (-0.30779309, -0.26419882),
    "CHN": (0.26767895, 0.19524759),
    "KOR": (-0.38479095, 0.88179998),
    # 剩余7个国家的坐标对应关系按需求补全
}

plt.figure(figsize=(10,10), dpi = 100)

G = nx.from_pandas_edgelist(top10, 'reporteriso3', 'partneriso3', 'tradevalue', create_using= nx.DiGraph())
widths = nx.get_edge_attributes(G,'tradevalue')
# 直接从映射字典取坐标,不用循环绑定
pos = {nation: pos_map[nation] for nation in top_10_list}

pos_nodes = nudge(pos, 0, 0.12)

nx.draw_networkx_edges(G,pos, width=list(widths.values()), edge_color = '#9ECAE4')
nx.draw_networkx_nodes(G, pos=pos, nodelist = cut['Nation'], node_size= cut['final'], node_color ='#AB89EF', edgecolors ='#000000')
nx.draw_networkx_labels(G,pos_nodes, font_size=15)
plt.text(-1.15,-1.15,s='hs : ')
# 手动固定坐标轴范围,确保文本在可视区域内
plt.xlim(-1.2, 1.2)
plt.ylim(-1.2, 1.2)
# 可选:关闭坐标轴显示更美观
plt.axis('off')
plt.savefig(location,dpi=300)

内容的提问来源于stack exchange,提问作者Jeong In Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:06