LINUX.ORG.RU

диаграммы Венна

 диаграммы венна


0

1

Есть несколько объектов (A, B, C etc.).
В каждом объекте - множество элементов (1, 2, 3, 4, 5 etc.).
В разных объектах могут быть одинаковые элементы (количество общих элементов и интересует)

Задача:
Построить по данным диаграммы Венна, либо аналог - взвешенный граф, в котором узлы - это объекты, а на веса ребер - количество общих элементов.

Вопросы:
1. Как организовать хранение данных подобного вида? Желательно - используя более-менее традиционные методы (MySQL, например, или MongoDB). Да, есть графовые базы данных, но ставить отдельную СУБД не хотелось бы.

2. Как по этим данным лучше всего строить подобные диаграммы (алгоритм) ?

★★★★★

венн как я понимаю это просто кружки, остальное — задача размещения объектов на их пересечениях

граф храни просто,

nodes (node)

edges (edge: source, target, weight)

если рисовать для веба, глянь d3js, там много искаропки алгоритмов для этого, не пожалеешь

trashymichael ★★★
()
Последнее исправление: trashymichael (всего исправлений: 1)
Ответ на: комментарий от trashymichael

Для веба. Библиотеку для рисования графов нашел (graphdracula).
Проблема в чем: объектов и элементов может быть ооочень много.
Допустим:
20 объектов, в каждом 30 000 элементов. Как это все хранить, чтобы всегда можно было быстро взять любые 10 объектов и посчитать количество общих элементов?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

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

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

Ок, посмотрю на д3.
Для отображения данных мало - нарисовать 10 кружков и N ребер, на ребрах - просто числа.
А вот как обработать данные, чтобы получить эти числа?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от trashymichael

Как огранизовать хранение данных, чтобы данная процедура была быстрой на больших объемах данных?
INNER JOIN в MySQL - будет очень тяжелым запросом, так?

kovrik ★★★★★
() автор топика
Ответ на: комментарий от trashymichael

А как в этой d3js нарисовать просто неориентированный взвешенный граф?
В examples все какие-то очень навороченные примеры. Пытаюсь изменить какой-то, но там возня с rotate()translate()'ами - не получается нормально отобразить данные.

kovrik ★★★★★
() автор топика
Ответ на: комментарий от kovrik

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

trashymichael ★★★
()
Ответ на: комментарий от kovrik

там есть и венна пример но не такой как тебе нужен. тебе нужна упаковка в области пересечения, смотри там pack layout или что-то в духе

trashymichael ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.