gpt4 book ai didi

python - 在 matplotlib 中,为什么用细线绘图会更快?

转载 作者:太空狗 更新时间:2023-10-29 17:51:30 24 4
gpt4 key购买 nike

我今天偶然发现了这个:如果线宽小于 1.0,那么在 matplotlib 中绘制线条似乎要快得多。我只在 Mac 上测试过,但效果似乎非常强。

例如,如果您尝试此代码,您会发现线宽为 0.5 的数据绘制速度比 1.0 的线宽快 10 倍。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,10,20000)
y = np.sin(x) + np.random.random(len(x))*0.1

plt.ion()
plt.show()

plt.plot(x,y,lw=0.5)
plt.draw()

plt.figure()

plt.plot(x,y,lw=1.0)
plt.draw()

我用这段代码绘制了线宽和速度之间的关系图:

import numpy as np
import matplotlib.pyplot as plt
import time

x = np.linspace(0,10,10000)
y = np.sin(x) + np.random.random(len(x))*0.1

plt.ion()
plt.show()

linewidths = np.linspace(2,0,20)
times = []

for lw in linewidths:
t = time.time()

plt.plot(x,y,lw=lw)
plt.draw()

times.append(time.time()-t)

plt.figure()



plt.ioff()
plt.plot(linewidths[1:],times[1:],'ro')

plt.xlabel('Linewidth (points)')
plt.ylabel('Time (seconds)')
plt.show()

结果如下:enter image description here

使用小于 1.0 的线宽可提供约 10 倍的加速,在 1.0 之后,时间线性增加。如果数据点的数量很大,大于大约 5000 个点左右,我只会观察到这种效果。这对我来说很有意义,如果我要求 matplotlib 显示更多像素,那么绘制绘图可能需要更长的时间,但我没想到使用稍小的线宽(0.5 对 1.0)会带来巨大的加速。

谁能解释为什么会这样?我很高兴发现它,因为它可以更快地显示大型数据集。


一些人认为这可能特定于 MacOSX 后端。这似乎很有可能。如果我尝试以 png 格式保存绘图而不是将它们绘制到屏幕上,时间似乎更随机分布: enter image description here

最佳答案

有人可能会用更彻底的答案替换它,但似乎这种效果是 MacOSX 后端独有的,因为将图形保存为 png 时不会出现这种效果。绘图时间似乎也受 Matplotlib 版本的影响(1.3.x 与 1.3.0)。但是,Mac 用户似乎可以通过将线宽减小到小于 1.0 的值来享受大型数据集的加速。

关于python - 在 matplotlib 中,为什么用细线绘图会更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18905273/

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