2014-09-11 2 views
1

Итак, я искал mpld3 для некоторых более крупных наборов данных, которые у меня есть (~ 700 МБ на диске), которые я мог бы загрузить с помощью square/crossfilter. Что было бы интересно это возможность сделать что-то вроде:Как объединить лучшее из mpld3 и квадратного/crossfilter как пользовательский плагин?

import matplotlib.pyplot as pl 
import numpy as np 
import mpld3 

# data is a numpy recarray of city information, for example 

fig, ax = pl.subplots(1,3) 
n, bins, patches = ax[0].hist(data['population'], bins=10) 
counts, edges_x, edges_y, im = ax[1].hist2d(data['land_area'], data['wealth'], bins=10) 
points = ax[2].scatter(data['latitude'], data['longitude']) 

, а затем быть в состоянии сделать выбор перетащить/слайд на сгенерированной гистограмме динамически изменять другие два участка на только рисовать точки, проходящие отбор. Я предполагаю, что из-за отсутствия связей между каждым «городом» среди сюжетов это может быть слишком много, чтобы спросить, и проще всего просто использовать d3?

+0

Должен работать, если вы можете агрегировать свои данные, отбрасывая или предварительно агрегируя размеры. Если у вас есть только 10 бункеров для населения и 100 лотов land_area/wealth, это не должно быть проблемой. Вопрос в том, сколько уникальных комбинаций широты/долготы вы имеете в виду. –

ответ

0

Мы традиционно управляли людьми от mpld3 для больших наборов данных, например. от FAQ:

Работает ли mpld3 для больших наборов данных?

Короткий ответ: не совсем. Mpld3, как и сам matplolib, предназначен для визуализации малого и среднего масштаба, и это вряд ли изменится. Причина в том, что mpld3 построен на основе SVG HTML, который не особенно хорошо подходит для больших наборов данных. Графики с более чем несколькими тысячами элементов будут иметь заметно медленный отклик для интерактивных функций.

Однако, это может быть, что crossfilter хороший общий способ сделать mpld3 обрабатывать большие объемы данных хорошо, и если вы сделаете это работает, пожалуйста, поделитесь!

+0

Я немного смущен тем, почему вы можете оттолкнуть людей от больших наборов данных. В частности, довольно очевидно, что агрегация - это способ работать с этими крупными наборами данных (вы можете загружать более 10 м событий с помощью crossfilter и работать так же быстро, как 300 событий) по той же причине. Есть ли хорошие учебники/документация по написанию плагинов для mpld3, а также отладка? – kratsg

+0

Возможно, ответ таков, что мы не знали о перекрестном фильтре. Вот [простой пример плагина mpld3] (http://mpld3.github.io/examples/drag_points.html), а вот [более сложный, который использует некоторые элементы пользовательского интерфейса интересным способом] (http: // nbviewer.ipython.org/github/jakevdp/mpld3/blob/master/notebooks/sliderPlugin.ipynb). –

+0

кросс-фильтрация и подобные методы агрегирования данных - это что-то, что может случиться в matplotlib, и действительно, вероятно, полезно для matplotlib даже без mpld3! По этой причине я не думаю, что функциональность принадлежит самому mpld3. Хотя вы правы, что мы можем управлять людьми в этом направлении. Если вас интересует пакет визуализации python, который автоматически выполняет такую ​​сортировку, я бы посмотрел [Bokeh] (http://bokeh.pydata.org). – jakevdp