【问题标题】:how to decorate a matplotlib plot with another function如何用另一个函数装饰 matplotlib 图
【发布时间】:2016-03-14 01:42:14
【问题描述】:

我经常不得不在其他现有情节的基础上制作情节。我不想编写一个复制现有功能的新函数,而是想将一个装饰器应用到一个 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()

目标是产生一个情节,

【问题讨论】:

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


    【解决方案1】:

    您需要拨打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() 
    

    【讨论】:

    • 哦,太好了。这真的很有帮助。谢谢你的协助。这将节省我大量的代码和东西的复制。
    猜你喜欢
    • 1970-01-01
    • 2013-11-17
    • 2021-11-29
    • 2017-09-27
    • 2020-11-22
    • 2016-03-21
    • 2014-07-18
    • 2021-12-12
    相关资源
    最近更新 更多