Как создать диаграммы Санки с изогнутыми конечными точками узлов?

Я использую D3.js и его плагин sankey для создания диаграмм sankey для моего набора данных.

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

введите описание изображения здесь

Теперь я пытаюсь заставить ветви получить изгиб вниз (и вверх), вроде как это изображение из Википедии (минус весь этот цикл с обратной связью):

введите описание изображения здесь

У меня вопрос: возможно ли это? Что ж, я знаю, что это возможно, просто насколько это большая кроличья нора. Я никогда раньше не использовал SVG, и это мой первый набег на D3, поэтому я не совсем уверен, во что ввязываюсь.

В качестве альтернативы, есть ли другая библиотека, которая будет создавать диаграмму, подобную той, что я собираюсь сделать? Я наткнулся на эту библиотеку python, которая, похоже, может делать то, что я хочу, но у меня никогда не писал ни строчки на Python, и не хотел бы (по крайней мере сегодня), если смогу этого избежать.


person Zach Lysobey    schedule 12.03.2014    source источник


Ответы (1)


Да, это возможно (и относительно легко осуществимо) с d3.js.

Вот пример:

http://bl.ocks.org/cfergus/3921009

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

Взгляните на этот случайный генератор Санки:

http://bl.ocks.org/cfergus/3956043

Через некоторое время вы получите графики с циклами.

person VividD    schedule 14.03.2014
comment
Я был очень взволнован, когда вы опубликовали это, но не похоже, что он делает то, что я хочу. Это иллюстрирует, как работает петля, но, как указано в моем вопросе, я не ищу петли. Я ищу, как заставить узлы изгибаться вверх и наружу на концах (указывать вверх или вниз в зависимости от их положения относительно выходного узла на изображении Wiki). - person Zach Lysobey; 14.03.2014
comment
Кстати, я был удивлен, обнаружив, что эти демонстрации не работали для меня в OSX / Chrome. Мне пришлось переключиться на Safari, чтобы они запустились - person Zach Lysobey; 14.03.2014
comment
Ошибка Chrome: отказано в выполнении скрипта из 'raw.github .com / cfergus / d3-plugins / master / sankey / sankey.js ', потому что его тип MIME (' text / plain ') не является исполняемым, и включена строгая проверка типа MIME. Для связывания с другими скриптами в github, я думаю, вам нужно использовать относительные ссылки, а не ссылку на необработанный файл. - person AmeliaBR; 15.03.2014