如何用另一个函数装饰matplotlib图

时间:2015-12-08 22:58:52

标签: python python-3.x matplotlib python-decorators

我经常要制作基于其他现有情节的情节。我没有编写一个复制现有的新函数,而是想将一个装饰器应用到matplotlib图中,该图可能会添加额外的行等。我写了下面的代码,但是没有用。我想知道是否有人可能知道这样做的正确方法。

所以这就是目标:

x, y = np.linspace(0,5), np.linspace(0,10)
x2,y2 = np.linspace(0,5), np.linspace(0,5)
plt.plot(x,y)
plt.plot(x2,y2)
plt.show()

现在在下面的代码中,我用一行创建了一个图。然后我尝试在装饰器中添加第二条绘制线。我知道代码不起作用,但想知道是否有人可以告诉我如何解决这个问题。

def overplot(func):
    def testplot_wrapper(func):
        x, y = np.linspace(0,5), np.linspace(0,10)
        plt.plot(x,y)
        plot.show()
    return(testplot_wrapper)

@overplot
def testplot():
    x, y = np.linspace(0,5), np.linspace(0,10)
    plt.plot(x,y)
    plt.show() 

p = overplot(testplot) 
p.show()

目标是制作一个

的情节

1 个答案:

答案 0 :(得分:3)

您需要致电func

def overplot(func):
    def testplot_wrapper():
        x, y = np.linspace(0,5), np.linspace(0,10)
        plt.plot(x,y)
        func()
    return(testplot_wrapper)

@overplot
def testplot():
    x, y = np.linspace(0,5), np.linspace(0,5)
    plt.plot(x,y) 

testplot()
plt.show()