小编Ari*_*ief的帖子

Figure.show、Figure.canvas.draw 和Figure.canvas.draw_idle 之间有什么区别

Figure在 Matplotlib 中,我可以通过调用对象(例如,fig调用方法show( ))来更新图中绘图的视觉效果fig.show()。但我也可以通过调用canvas图中的对象然后调用方法draw( fig.canvas.draw()) 来做到这一点。

例子:

import matplotlib.pyplot as plt

fig, axes = plt.subplots()
axes.plot([1,2,3],[2,3,4])
fig.show()
axes.plot([1,2,3],[-2,23,14])
fig.show()
Run Code Online (Sandbox Code Playgroud)

import matplotlib.pyplot as plt

fig, axes = plt.subplots()
axes.plot([1,2,3],[2,3,4])
fig.show()
axes.plot([1,2,3],[-2,23,14])
fig.canvas.draw()
Run Code Online (Sandbox Code Playgroud)

我怀疑他们fig.show也会表演self.canvas.draw()和其他一些事情。但是当我检查代码时,我只看到它可能会调用self.canvas.draw_idle().

fig.show, fig.canvas.draw,之间有什么区别fig.canvas.draw_idle??

canvas matplotlib

10
推荐指数
1
解决办法
1万
查看次数

与列表理解相比,生成器速度较慢

据我所知,当我们只想使用这些值一次时,我们可以使用生成器。使用下面的 2 个示例,我的逻辑是第二个应该更快,因为第一个首先创建一个列表,然后循环遍历值..而第二个仅处理来自生成器的值。然而,当我计算时间时,列表理解总是比生成器更快。为什么是这样?

第一:

x = []
a = time.perf_counter()
for j in [i**2 for i in range(20000)]:
    x.append(j)
print( time.perf_counter() - a )
Run Code Online (Sandbox Code Playgroud)

第二:

x = []
a = time.perf_counter()
for j in (i**2 for i in range(20000)):
    x.append(j)
print( time.perf_counter() - a )
Run Code Online (Sandbox Code Playgroud)

python performance

4
推荐指数
1
解决办法
554
查看次数

标签 统计

canvas ×1

matplotlib ×1

performance ×1

python ×1