Как показать браки в "семейном дереве" на d3.js?

Я разработчик HTML/CSS, исследуя решения javascript для создания "дерева семьи", который должен демонстрировать браки (вне семьи, конечно) значимым образом.

По сути, я смотрю, как он основывается на дендрограмме, основанной на d3.js, например. http://bl.ocks.org/4063570, но я изо всех сил пытался найти что-нибудь там, что выражает "браки".

Ниже приведено изображение данных, на которых я опишу следующее:

here's my data

Любая помощь/предложения/ссылки будут высоко оценены! Я просто не знаю, возможно ли это, но хотелось бы использовать d3.js, поскольку он выглядит так хорошо сделанным и, по-видимому, универсальным.

Ответ 1

Есть несколько вариантов, но я считаю, что каждый из них потребует немного работы. Это помогло бы, если бы был один стандарт представления семейного дерева в JSON. Недавно я заметил, что у geni.com есть достаточно углубленный API для этого. Возможно, кодирование против их API было бы хорошей идеей для повторного использования...

- Родословное дерево -

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

- Дерево компоновки скобок -

Подобно родовому дереву, но двунаправленному, это Дерево компоновки скобок позволяет обрабатывать вид типа "мои родители, дедушки и бабушки, дети, внуки". Подобно Pedigree Tree, вы можете привязать индивидуумов к перегруппировке скобки на node.

- Макет, основанный на силе -

Есть несколько интересных силовых макетов, которые кажутся многообещающими. Взгляните на этот пример силового макета с интеллектуальными метками. Корректировка алгоритма определения "силы" может сделать это очень красивым деревом с более старыми поколениями выше или ниже новых.

- Кластерная дендрограмма (почему она не работает) -

Макеты d3.js, которые я видел, которые лучше всего подходят для семейных деревьев, предполагают, что один node является родителем, тогда как вам нужно представить родителя как комбинацию (визуально "T" между ними) узлы: один node, который является членом вашего дерева, и один плавающий node, который представляет зятя. Настройка дендрограммы кластера для этого должна быть осуществимой, но не без существенных изменений.

Если вы - или кто-то другой - решайте это, дайте мне знать. Я хотел бы видеть (и извлекать выгоду) из работы и, возможно, вносить в нее вклад, если это возможно.

Ответ 2

Мне также нужно было рисовать родословные с D3, поэтому я понял, как это сделать. У меня есть созданные примеры, которые показывают основные функции, а затем добавляют дополнительные функции, такие как расширение и показ потомков.

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

Вот как выглядит это. Стиль можно настроить по желанию.

enter image description here

Ответ 3

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

В d3 вы можете расширить все структуры данных в соответствии с тем, что вы хотите, тогда есть больше работы по связыванию данных, но все это настраивается. Вот пример структур данных, которые я использовал бы в макете силы.

{
  "nodes": [
    {
      "type": "root",
      "x": 300,
      "y": 300,
      "fixed": true
    },
    {
      "type": "male",
      "name": "grandpa"
    },
    {
      "type": "female",
      "name": "grandma"
    },
    {
      "type": "relationship"
    },
    {
      "type": "male",
      "name": "dad"
    },
    {
      "type": "female",
      "name": "mum"
    },
    {
      "type": "relationship"
    },
    {
      "type": "male",
      "name": "I"
    }
  ],
  "links": [
    {
      "source": 0,
      "target": 2
    },
    {
      "source": 1,
      "target": 2
    },
    {
      "source": 0,
      "target": 3
    },
    {
      "source": 3,
      "target": 4
    },
    {
      "source": 4,
      "target": 6
    },
    {
      "source": 5,
      "target": 6
    },
    {
      "source": 6,
      "target": 7
    }
  ]
}

Надеюсь, я кое-что разъяснил о возможностях d3.

Ответ 4

Вашикаран - это очень вдохновляющее искусство загипнотизировать любого человека и вещь, в основном человека, использующего этот акт для решения любой проблемы в жизни, они избавляются от любой проблемы в любое время, это очень мощная мантра и очень помогает человеку, оказывающему услуги специалистом-васикараном. позвоните сейчас: - (+ 91-9876706621) http://www.famousvashikaranspecialist.com/

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