Использование matplotlib.collection.LineCollection для рисования огромного количества строк - PullRequest
0 голосов
/ 13 июля 2020

У меня проблема с памятью при использовании matplotlib.collection.LineCollection с очень большим количеством строк (> 1 000 000). Я пытаюсь придерживаться библиотеки matplotlib из-за некоторых хороших функций геоплоттинга.

Есть ли способ нарисовать линии в сохраненном файле в al oop, чтобы только часть общего коллекция сохраняется в памяти? Ниже приведен минимальный рабочий пример, показывающий проблему с памятью (обратите внимание, что этот код будет использовать около 2 ГБ ОЗУ).

import matplotlib.pyplot as plt, matplotlib.collections as mat, numpy as np

#Generate line collection array
numEdges = 10000000
lineArray_m = np.zeros((numEdges, 2, 2), dtype = np.float64)

#Generate line collection and add it to the plot
fig, ax = plt.subplots(figsize = (8, 8))
for i in range(5):
    line_collection = mat.LineCollection(lineArray_m[i*1000000:(i+1)*1000000,:,:], lw = 1, colors = 'k') #Note: this is the call causing large memory consumption, redefining or deleting the variable does not release memory
    ax.add_collection(line_collection)
...