在Python绘图中如何避免内存不足?

2024-05-17 02:37:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要画一大堆不同的物体(大约10^5个填充椭圆和类似的形状)。我要做的是使用命令一次添加一个plt.gcf公司().gca()。添加艺术家(e),然后使用表演()最后。这需要更多的记忆。在

有没有一种方法可以一次绘制一个(也就是说,不用像上面那样添加它们),从而减少我消耗的内存量?即使有一个大大增加绘图所需时间的解决方案,我也会很好。在


Tags: 方法记忆内存命令绘图绘制公司plt
1条回答
网友
1楼 · 发布于 2024-05-17 02:37:42

要绘制大量相似的对象,必须使用不同的matplotlib.collections类之一——唉,它们的用法有点神秘,至少在我的理解中是这样的。。。在

总之,从docsthis official example开始 我可以把下面的代码组合起来

$ cat ellipses.py
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import EllipseCollection

N = 10**5

# centres of ellipses —  uniform distribution, -5<=x<5, -3<=y<3
xy = np.random.random((N,2))*np.array((5*2,3*2))-np.array((5,3))

# width, height of ellipses
w, h = np.random.random(N)/10, np.random.random(N)/10

# rotation angles, anticlockwise
a = np.random.random(N)*180-90

# we need an axes object for the correct scaling of the ellipses
fig, ax = plt.subplots()

# create the collection
ec = EllipseCollection(w, h, a,
                    units='x',
                    offsets=xy,
                    transOffset=ax.transData)

ax.add_collection(ec)
ax.autoscale(tight=True)

plt.savefig('el10^5.png')

我把它记在我的低端笔记本上

^{pr2}$

如您所见,当您对每个地块所需的分期付款进行折扣时,大约需要 5秒-结果是什么?在

el10^5.png

我认为关于偏心率和角度的细节在如此密集的描述中丢失了,但是我不知道你的任务的具体细节,也不会进一步评论。在

相关问题 更多 >