MemoryError с использованием Plotly в Python - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь построить временной ряд с помощью Plotly. Графики обычно содержат 200 000 строк и 10 кривых, в результате получается 80Mo html файлов. Но эти 200000 строк ограничены MemoryError, поднятым Plotly, и это очень ограничивает мои исследования.

    py.plot(fig, filename=self.filename, auto_open=True)
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\site-packages\plotly\offline\offline.py", line 586, in plot
    pio.write_html(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\site-packages\plotly\io\_html.py", line 508, in write_html
    html_str = to_html(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\site-packages\plotly\io\_html.py", line 137, in to_html
    jdata = json.dumps(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 234, in dumps
    return cls(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\site-packages\_plotly_utils\utils.py", line 60, in encode
    return _json.dumps(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 234, in dumps
    return cls(
  File "C:\Users\Max\AppData\Local\Programs\Python\Python38-32\lib\json\encoder.py", line 202, in encode
    return ''.join(chunks)
MemoryError

Я уже реализовал уменьшение размера (например, this topi c предлагает), а также округляет значения до ограниченного числа десятичных знаков, чтобы избежать больших файлов. html. Но все же этого недостаточно.

Также, например, при построении 10 кривых, даже если они имеют одну и ту же ось X, файл html будет содержать в 10 раз один и тот же вектор X. Есть ли способ улучшить это?

Когда я смотрю на память, пока Plotly объединяет данные, и когда он перестает работать, кажется, что используется только 500 МБ ОЗУ, в то время как память моего компьютера далека от заполнения по-прежнему 1 или 2 Go ОЗУ свободны. Таким образом, я не понимаю, почему возникает этот MemoryError. Есть ли где-то в параметрах Plotly или Python параметр выделенного пространства памяти?

Я даже готов использовать любую другую библиотеку, которая позволила бы мне рисовать большие графики, если они обеспечивают достаточную интерактивность. Например, Matplotlib может рисовать большие временные ряды, когда Plotly не может, но это намного менее интерактивно. Этот кажется очень легким и посвящен временным рядам, но я не нашел его пакета Python, и для него потребуется разработать интерфейс Python с нуля.

1 Ответ

0 голосов
/ 29 мая 2020

https://bcolz.readthedocs.io/en/latest/intro.html#bcolz -смотреть

Я провел несколько быстрых поисков в Google по вашей проблеме, и это кажется разумным решением, хотя я не уверен, что вы будете может использовать его с Plotly. Вам придется попробовать это самостоятельно.

...