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

PyScript运行Plotnine官方示例仅输出Pandas警告不显示绘图如何解决

问题根本原因

你看到的两条Pandas FutureWarning属于非阻断的版本兼容提示,不会导致绘图加载失败,真正的问题出在渲染逻辑上:

  1. 本地Python环境中print(ggplot对象)会触发matplotlib弹出图形窗口,但PyScript运行在浏览器沙箱中,print()只会将对象的文本描述输出到控制台,不会生成可见的页面图像。
  2. Plotnine基于Matplotlib封装,PyScript Alpha版本默认没有配置Matplotlib的浏览器端渲染后端,生成的图形对象不会自动插入到网页DOM结构中。
修复方案

按照以下两点调整代码即可正常显示绘图:

  • 在页面中预留一个用于挂载绘图的DOM容器,不要依赖print输出图形
  • 代码开头显式指定Matplotlib使用Pyodide适配的浏览器渲染后端,生成图形对象后调用PyScript内置的display()方法将图挂载到预留的容器中

修复后的完整可运行代码:

<html>
<head>
    <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
    <script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<py-env>
    - plotnine
    - scipy
    - statsmodels
</py-env>
<body>
    <div id="plot-output"></div>
    <py-script>
    import matplotlib
    matplotlib.use('module://matplotlib_pyodide.html5_canvas_backend')
    from pyscript import display
    from plotnine import ggplot, geom_point, aes, stat_smooth, facet_wrap
    from plotnine.data import mtcars

    plot = (
        ggplot(mtcars, aes('wt', 'mpg', color='factor(gear)'))
        + geom_point()
        + stat_smooth(method='lm')
        + facet_wrap('~gear')
    )
    # 渲染图形并挂载到页面
    fig = plot.draw()
    display(fig, target="plot-output")
    </py-script>
</body>
</html>
  • 关于之前出现的Pandas警告:是当前PyScript软件源中Plotnine版本和预装Pandas版本的兼容问题,Plotnine内部还在使用已被标记为废弃的DataFrame.append方法,该警告不影响任何功能运行,后续Plotnine版本迭代修复内部实现后会自动消失,不需要额外处理。
  • 注意不要照搬本地Python终端/IDE里的Plotnine使用习惯,浏览器环境没有本地图形弹窗,所有可视化内容都需要显式挂载到页面对应节点才能被用户看到。

内容的提问来源于stack exchange,提问作者Aku-Ville Lehtimäki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:15:36