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

如何在函数中生成pandas绘图不自动展示且后续可手动调用显示

解决方案

问题原因

  • 自动展示绘图:Jupyter Notebook默认开启matplotlib inline渲染模式,cell执行过程中生成的绘图对象会在cell执行结束后自动输出展示。
  • p.show()报错:你代码中返回的tmp是AxesSubplot类型,show()是matplotlib.pyplot模块或Figure画布对象的方法,Axes对象本身没有该方法。

实现代码

修改后的函数逻辑如下,调用时不会自动展示绘图,需要时直接操作返回的画布对象即可展示:

from matplotlib import pyplot as plt
import pandas as pd

def custom_plot(df):
    # 临时关闭即时绘图模式,避免函数调用时自动出图
    with plt.ioff():
        ax = df.plot(kind = 'bar')
        plt.legend(title = "Test")
        # 获取Axes对应的画布对象
        fig = ax.get_figure()
    # 返回 画布对象、绘图Axes、处理后的dataframe,可按需调整返回值
    return [fig, ax, df]

df = pd.DataFrame( {'x' : [1,2,3]})
# 此时调用函数不会自动展示绘图
p, ax, d = custom_plot(df)

触发展示的方法

需要展示绘图时,任选一种方式即可:

  • 在cell的最后一行直接写变量p,Jupyter会自动渲染该画布对象
  • 调用p.show()方法直接展示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:15:03