Matplotlib медленно с большими наборами данных, как включить прореживание?

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

То, что я ищу, это способ позволить matplotlib уничтожить мои данные. Есть ли параметр, свойство или другой простой способ включить это? Любые предложения о том, как реализовать это, приветствуются.

Некоторый код:
import numpy as np
import matplotlib.pyplot as plt

n=100000 # more then 100000 points makes it unusable slow
plt.plot(np.random.random_sample(n))
plt.show()
Некоторая справочная информация

Раньше я работал над большим приложением C ++, где нам нужно было составлять большие наборы данных, и для решения этой проблемы мы использовали преимущества структуры данных следующим образом:

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

Затем увеличенный фрагмент прореживается, и поскольку данные упорядочены, мы можем просто перебрать блок точек, попадающих в один пиксель. И для каждого блока вычисляется среднее, максимальное и минимальное значения. Вместо одного пикселя мы рисуем полосу на графике.

Например: если ось x упорядочена, для каждого блока будет нарисована вертикальная линия, возможно, среднее значение другого цвета.

Во избежание алиасинга на графике передискретизацию с коэффициентом два.

В случае, если это точечная диаграмма, данные могут быть упорядочены путем сортировки, потому что последовательность построения не важна.

Хорошая вещь этого простого рецепта в том, что чем больше вы увеличиваете, тем быстрее оно становится. По моему опыту, пока данные помещаются в память, графики остаются очень отзывчивыми. Например, 20 графиков временных данных с 10 миллионами точек не должны быть проблемой.

Ответы на вопрос(2)

Ваш ответ на вопрос