Matplotlib, строящий медленный [дубликат]

Это также хорошо для Unit Testing, вы можете вводить свои собственные классы (отвечающие требованиям интерфейса) в класс, который зависит от него

55
задан naught101 20 August 2015 в 11:25
поделиться

3 ответа

Более новый проект имеет большой потенциал для больших наборов данных: Bokeh , который был создан с помощью именно в этом смысле .

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

11
ответ дан Eric Lebigot 22 August 2018 в 21:20
поделиться
  • 1
    Если вы хотите создать структурированный массив numpy и открыть файл как readonly, тогда: np.memmap(filename, mode='r', dtype=[('floati','f'), ('floatq', 'f')]). – jfs 2 May 2011 в 12:53
  • 2
    @ J.F. Себастьян: Спасибо, я отредактировал ответ. – Eric Lebigot 4 May 2011 в 14:34
  • 3
    Отличный пост. +1 для VisIt и ParaView - это полезные и мощные программы визуализации, предназначенные для обработки (очень!) Больших наборов данных. Обратите внимание, что VisIt также имеет интерфейс сценариев Python и может рисовать 1D, в дополнение к 2D и 3D, графикам (кривые). Что касается формата файла, VTK - относительно простой формат, который поддерживает обе программы (в действительности ParaView построен на библиотеке VTK). – Chris 8 December 2011 в 01:00
  • 4
    начиная с 1 миллиона точек двойников, я получаю переполнение Agg в любом бэкэнд, который я пробовал, также с path.simplify = True. Поэтому я не верю, что это можно будет сделать «точно так же» с Matplotlib. – K.-Michael Aye 19 October 2012 в 02:49
  • 5
    Интересно. Как говорится в ответе Джонатана Дурси, 20% баллов можно достичь с помощью Matplotlib, но с некоторыми ограничениями (растровый выход, ...). – Eric Lebigot 23 October 2012 в 10:40
  • 6
    Вы можете увидеть go.continuum.io/visualizing-billions-data-points Это о Datashader datashader.readthedocs.io (и Bokeh!) – scls 21 October 2016 в 20:20
  • 7
    Проверьте Bokeh Datashader, который «превращает даже самые большие данные в изображения»: github.com/bokeh/datashader – tommy.carstensen 25 June 2017 в 21:59
  • 8
    Также связано holoviews.org – A-B-B 10 November 2017 в 01:48

Интересно, есть ли выигрыш, ускоряющий поиск ваших очков? (Я был заинтригован R * (r star) деревьями некоторое время.)

Интересно, может ли быть способ использовать что-то вроде дерева r * в этом случае. (при увеличении, более высокие узлы в дереве могут содержать информацию о более грубом, увеличенном рендеринге, узлы, расположенные дальше к листьям, содержат отдельные сэмплы).

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

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

1
ответ дан nielsbot 22 August 2018 в 21:20
поделиться
  • 1
    Я понятия не имею о R. Мой набор данных похож на csv вроде {index, floati, floatq}. Это повторяется 20 раз. Я не уверен, как вы построите структуру данных, которую вы упомянули в R. – wishi 2 May 2011 в 10:10
  • 2
    Я думаю, что это может быть задействованный проект. Я говорю о & quot; R star & quot; деревья. wikipedia: ru.wikipedia.org/wiki/R * _ дерево HTH – nielsbot 2 May 2011 в 10:11

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

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

Итак, в основном для вашего сюжета (это 2D? 3D? Я предполагаю, что это 2D), Я предлагаю вам построить один большой график, который охватывает весь диапазон [0, n] с низким разрешением, 2 меньших графика, которые покрывают [0, n / 2] и [n / 2 + 1, n] с удвоенным разрешением большого один, 4 меньших графика, которые покрывают [0, n / 4] ... [3 * n / 4 + 1, n] с удвоенной разрешающей способностью 2 и т. д.

Не уверен мое объяснение действительно ясно. Кроме того, я не знаю, обрабатывается ли этот вид графика с несколькими разрешениями любой существующей графической программой.

7
ответ дан user703016 22 August 2018 в 21:20
поделиться
  • 1
    в этом случае я мог бы просто уменьшить частоту дискретизации ... но мне нужно, чтобы многие значения были в одном интерактивном сюжете. – wishi 2 May 2011 в 09:26
  • 2
    @wishi: Действительно ли вы нуждаетесь миллионы значений в one , учитывая, что многие из них будут перекрываться? Адаптивное разрешение кажется мне разумным. – user703016 2 May 2011 в 09:28
  • 3
    нет никаких шансов ... в частности, я записываю данные в реальном времени, инкапсулированные в очень короткий сигнальный пакет. Это означает все образцы или ничего. Вы не можете адаптироваться к чему-то, что вы планируете анализировать;) – wishi 2 May 2011 в 10:07
  • 4
    Это всего лишь вопрос отображения, а не анализа данных. Ваши результаты не будут затронуты, как раз на дисплее. – user703016 2 May 2011 в 10:15
Другие вопросы по тегам:

Похожие вопросы: