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

如何在HTML中使用Py-Script渲染NetworkX生成的图形?

解决Py-Script中NetworkX图形无法在py-repl渲染的问题

问题说明

在Py-Script的py-repl环境中,使用NetworkX生成图形后调用plt.show()无法显示图形,但numpy结合matplotlib的示例代码(直接返回figure对象)可正常渲染,且已确认matplotlib、networkx等依赖包在Pyodide中可用。

解决方案

Py-Script的py-repl环境中,渲染matplotlib图形需要直接返回figure对象,plt.show()在该环境下不会触发图形渲染。针对NetworkX的场景,有两种可行方式:

方式1:获取当前Figure并返回

调用nx.draw()后,不使用plt.show(),而是通过plt.gcf()获取当前生成的Figure对象并返回。

方式2:显式创建Figure和Axes并传入NetworkX

提前创建matplotlib的Figure和Axes对象,将Axes传给nx.draw()的ax参数,最后返回Figure对象。

修改后的测试代码

测试用HTML代码

<html>
  <head>
    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
    <py-env> 
        - matplotlib 
        - networkx 
    </py-env>
  </head>
  <py-repl></py-repl>
</html>

方式1对应的NetworkX代码

import matplotlib.pyplot as plt
import networkx as nx

G = nx.Graph()
nodes_california = ["Los Ángeles", "San Diego", "San Francisco"]
nodes_florida = ["Miami", "Orlando", "Tampa"]

G.add_nodes_from(nodes_california)
G.add_nodes_from(nodes_florida)

G.add_edge("California", "Los Ángeles")
G.add_edge("California", "San Diego")
G.add_edge("California", "San Francisco")
G.add_edge("Florida", "Miami")
G.add_edge("Florida", "Orlando")
G.add_edge("Florida", "Tampa")

nx.draw(G, with_labels=True)
plt.gcf()  # 返回当前Figure对象替代plt.show()

方式2对应的NetworkX代码

import matplotlib.pyplot as plt
import networkx as nx

G = nx.Graph()
nodes_california = ["Los Ángeles", "San Diego", "San Francisco"]
nodes_florida = ["Miami", "Orlando", "Tampa"]

G.add_nodes_from(nodes_california)
G.add_nodes_from(nodes_florida)

G.add_edge("California", "Los Ángeles")
G.add_edge("California", "San Diego")
G.add_edge("California", "San Francisco")
G.add_edge("Florida", "Miami")
G.add_edge("Florida", "Orlando")
G.add_edge("Florida", "Tampa")

# 显式创建Figure和Axes
fig, ax = plt.subplots()
nx.draw(G, with_labels=True, ax=ax)
fig  # 返回Figure对象

验证说明

以上两种方式均能在py-repl中正常渲染NetworkX生成的图形,逻辑与numpy示例中返回fig的方式一致,符合Py-Script对matplotlib图形渲染的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:24:24