首页 > 解决方案 > Python:在函数中生成熊猫图但不显示

问题描述

我想通过调用函数来绘制熊猫数据框的列。数据帧被传递给函数并进行操作。返回一个绘图和操作的数据框:

from matplotlib import pyplot as plt
import pandas as pd

def custom_plot(df):
    tmp = df.plot(kind = 'bar')
    plt.legend(title = "Test")
    return  [tmp,df]

df = pd.DataFrame( {'x' : [1,2,3]})
p,d = custom_plot(df)

执行此代码会显示此图,尽管我不希望它显示:

在此处输入图像描述

我想p通过调用类似的东西在 Jupyter 笔记本中绘制返回的对象p.show()。有2个问题:

  1. custom_plot()尽管我不希望它被绘制,但在调用时总是显示该图。

  2. 当我想p通过调用p.show()它进行绘图时不起作用。我被告知 AttributeError:'AxesSubplot' 对象没有属性 'show'

如何实现这种行为?

标签: pythonpandasmatplotlib

解决方案


也许这(部分)解决了这个问题:

from matplotlib import pyplot as plt
import pandas as pd

def custom_plot(df):
    tmp = df.plot(kind = 'bar')
    plt.legend(title = 'Test')
    fig = tmp.get_figure()
    plt.close()
    return fig, df

df = pd.DataFrame( {'x' : [1, 2, 3]})

p, d = custom_plot(df)

关闭图形可防止其显示。您可以p不使用.show()来显示图形。


推荐阅读