gpt4 book ai didi

python - Matplotlib Canvas 绘图

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:35:00 28 4
gpt4 key购买 nike

假设我定义了一些函数来执行某些 matplotlib 操作,例如

def dostuff(ax):
ax.scatter([0.],[0.])

现在,如果我启动 ipython,我可以加载这些函数并开始一个新图形:

In [1]: import matplotlib.pyplot as mpl

In [2]: fig = mpl.figure()

In [3]: ax = fig.add_subplot(1,1,1)

In [4]: run functions # run the file with the above defined function

如果我现在调用 dostuff,则图形不会刷新:

In [6]: dostuff(ax)

然后我必须明确地运行:

In [7]: fig.canvas.draw()

获取要绘制的 Canvas 。现在我可以将 dostuff 修改为

def dostuff(ax):
ax.scatter([0.],[0.])
ax.get_figure().canvas.draw()

这会自动重新绘制 Canvas 。但是现在,假设我有以下代码:

def dostuff1(ax):
ax.scatter([0.],[0.])
ax.get_figure().canvas.draw()

def dostuff2(ax):
ax.scatter([1.],[1.])
ax.get_figure().canvas.draw()

def doboth(ax):
dostuff1(ax)
dostuff2(ax)
ax.get_figure().canvas.draw()

我可以调用这些函数中的每一个, Canvas 将被重绘,但在 doboth() 的情况下,它将被重绘多次。

我的问题是:我如何编写代码,以便 canvas.draw() 只被调用一次?在上面的例子中变化不大,但是在更复杂的情况下,可以单独或分组调用几十个函数,重复绘制就更明显了,能避免就好了。想过用装饰器,但是好像不太简单。

有什么想法吗?

最佳答案

为什么我对 this SO question of yours 的回答不是关于“刷新装饰器”让它变得简单?我准确地展示了如何执行您在这里再次请求的操作(通过计算嵌套数量——顺便说一下,嵌套也是线程安全的)而您完全忽略了我的回答……奇怪的行为! -)

关于python - Matplotlib Canvas 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531333/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com