Может ли кто-нибудь порекомендовать библиотеку Python, которая может выполнять интерактивную визуализацию графиков?
Я специально хочу что-то вроде d3.js, но в python
идеале это тоже будет 3D.
Я посмотрел:
- NetworkX - это только
Matplotlib
графики, и они кажутся 2D. Я не видел никакой интерактивности, вроде той, чтоd3.js
дает, например, перетягивания узлов. - graph-tool - он делает только 2D-графики и имеет очень медленные интерактивные графики.
python
graph
d3.js
graph-tool
Эйриу фон Кауйф
источник
источник
Ответы:
Вы можете использовать d3py модуль python, который генерирует xml-страницы, встраивая скрипт d3.js. Например :
источник
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. Я проверил последнюю фиксацию d3py на github (SHA: 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)Plotly поддерживает интерактивные 2D и 3D графики. Графики визуализируются с D3.js и могут быть созданы с помощью Python API , Matplotlib , ggplot для Python , Сиборн , prettyplotlib и панд . Вы можете масштабировать, панорамировать, включать и выключать трассировки и просматривать данные при наведении курсора. Графики могут быть встроены в HTML, приложения, информационные панели и блокноты IPython. Ниже приведен температурный график, демонстрирующий интерактивность. Дополнительные примеры см. В галерее руководств по IPython Notebooks .
В документации приведены примеры поддерживаемых типов графиков и фрагментов кода.
Что касается вашего вопроса, вы также можете создавать интерактивные графики из NetworkX.
Для трехмерного построения с помощью Python вы можете создавать трехмерные точечные, линейные и поверхностные графики, которые также являются интерактивными. Графики визуализируются с помощью WebGL. Например, посмотрите трехмерный график ставок британского свопа.
Раскрытие информации: я в команде Plotly.
источник
Вы смотрели на Винсента? Винсент берет объекты данных Python и преобразует их в грамматику визуализации Vega. Vega - это инструмент визуализации более высокого уровня, созданный на основе D3. По сравнению с D3py репо vincent обновилось совсем недавно. Хотя все примеры статичны D3.
больше информации:
https://github.com/wrobstory/vincent
https://pypi.python.org/pypi/vincent/0.1.6
Графики можно просмотреть в Ipython, просто добавьте этот код
Или выведите в JSON, где вы можете просмотреть выходной график JSON в онлайн-редакторе Vega ( http://trifacta.github.io/vega/editor/ ) или просмотреть их на своем сервере Python локально. Более подробную информацию о просмотре можно найти по ссылке pypi выше.
Не уверен, когда, но в какой-то момент пакет Pandas должен иметь интеграцию с D3. http://pandas.pydata.org/developers.html
Bokeh - это библиотека визуализации Python, которая поддерживает интерактивную визуализацию. Его основной выходной бэкэнд - это HTML5 Canvas и использует модель клиент / сервер.
примеры: http://continuumio.github.io/bokehjs/
источник
Один рецепт, который я использовал (описанный здесь: Co-Director Network Data Files в GEXF и JSON из OpenCorporates Data через Scraperwiki и networkx ), работает следующим образом:
NetworkX JSON экспортер принимает вид:
В качестве альтернативы вы можете экспортировать сеть как файл GEXF XML, а затем импортировать это представление в библиотеку визуализации sigma.js Javascript.
источник
Другой вариант - боке, которое только что перешло в версию 0.3.
источник
Для тех, кто рекомендовал pyd3 , он больше не находится в стадии активной разработки и указывает на vincent . vincent также больше не находится в активной разработке и рекомендует использовать altair .
Так что, если вам нужен питонический d3, используйте altair.
источник
Попробуйте https://altair-viz.github.io/ - преемник d3py и vincent. Смотрите также
источник
Проверьте python-nvd3 . Это оболочка python для nvd3. Выглядит круче, чем d3.py, а также имеет больше вариантов диаграмм.
источник
Я бы предложил использовать mpld3, который объединяет визуализацию javascript D3js с matplotlib python.
Установка и использование очень просты, в нем есть несколько интересных плагинов и интерактивных материалов.
http://mpld3.github.io/
источник
Plotly может сделать для вас несколько классных вещей
https://plot.ly/
Создает высокоинтерактивные графики, которые можно легко встроить в HTML-страницы для вашего частного сервера или веб-сайта с помощью автономного API.
Обновление: я уверен в его возможностях 3D-построения, для 2D-графиков это потрясающе Спасибо
источник
Вы также можете сериализовать свои данные, а затем визуализировать их в D3.js, как это сделано здесь: Используйте Python и Pandas для создания сетевой диаграммы D3 Force Directed (она также поставляется с записной книжкой jupyter !)
Вот в чем суть. Вы сериализуете данные своего графика в следующем формате:
Затем вы загружаете данные с помощью d3.js:
Однако для ознакомления с рутиной
drawGraph
я отсылаю вас по ссылке.источник
Есть интересный перенос NetworkX на Javascript, который может делать то, что вы хотите. См. Http://felix-kling.de/JSNetworkX/
источник
Видеть:
Есть ли там хорошая интерактивная библиотека 3D-графиков?
В принятом ответе предлагается следующая программа, которая, по-видимому, имеет привязки к Python: http://ubietylab.net/ubigraph/
редактировать
Я не уверен в интерактивности NetworkX, но вы определенно можете создавать трехмерные графики. В галерее есть как минимум один пример:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
И еще один пример из «примеров». Однако для этого требуется, чтобы у вас был Mayavi.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
источник
У меня есть хороший пример автоматической генерации сетевых диаграмм D3.js с использованием Python здесь: http://brandonrose.org/ner2sna
Замечательно то, что вы получаете автоматически сгенерированный HTML и JS и можете встроить интерактивную диаграмму D3 в блокнот с IFrame.
источник
Библиотека
d3graph
построит принудительно управляемый d3-граф из Python. Вы можете «разбить» сеть на основе веса ребра и навести указатель мыши на узлы для получения дополнительной информации. Двойной щелчок по узлу приведет к фокусированию на узле и связанных с ним краях.Пример:
Интерактивный пример из титанического кейса можно найти здесь: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases .html
источник