我有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()
命令添加到循环对我没有帮助。