如何在函数中生成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
相关产品推荐
相关产品推荐

