如何减少多个重叠的matplotlib loglog图的内存开销?

时间:2019-03-11 23:26:21

标签: python matplotlib

我有40个数据集,每个数据集的大小约为115MB,我想将它们全部按对数对数比例绘制在同一图上。

# make example data 
import numpy as np
data_x = []
data_y = []
for _ in range(40):
    x, y = np.random.random(size = (2, int(7e6))) # 7e6 chosen to make about 115MB size
    data_x.append(x)
    data_y.append(y)
del x, y

# now show the size of one set in MB
print((data_x[0].nbytes + data_y[0].nbytes)/1e6, 'MB')
# 112.0 MB

我的计算机上有大约30GB的可用内存,因此我完全希望40*112MB = 4.5GB可以使用。

我想对每个数据集进行覆盖日志记录图:

import matplotlib.pyplot as plt 
for x,y in zip(data_x, data_y):
    plt.loglog(x, y)
plt.show()

但是内存开销太大。 我不希望对数据进行下采样。有没有一种方法可以减少我的内存开销以绘制此4.5GB数据?

我希望保留for循环,因为我需要修改其中的每个绘图的点样式和颜色,因此连接数据集是不利的。

我能找到的最相似的问题是here,但是不同之处在于,循环用于创建不同的图,而不是添加到同一图,因此将plt.clf()命令添加到循环对我没有帮助。

0 个答案:

没有答案