it-swarm-pt.tech

Exibindo a árvore genealógica de um panda

Eu tenho uma seção no meu site que exibe informações sobre todos os pandas em cativeiro conhecidos (aproximadamente 700) no total.

Cada panda tem uma única página que exibe seu nome, nascimento/morte e onde foi localizado. A página também tem um link para seus pais e filhos.

A (s) página (s) principal (s) mostra uma tabela de todos os pandas ordenados em data ou nascimento decrescente. Gostaria que esta página exibisse pandas relacionados juntos.

Isso parece implicar algum tipo de estrutura de árvore genealógica, mas para muitas famílias. O problema é que pandas acasalam com pandas diferentes. então uma fêmea com 7 filhotes pode ter 5 pais diferentes, que têm filhotes com outras fêmeas, isso leva a uma árvore muito bagunçada.

Alguém tem alguma sugestão de como isso pode ser exibido?

11
Andi

Você tem um desafio de visualização de dados agradável. Apenas jogando fora essa idéia.

E se você não mostrar automaticamente as conexões da família na página principal. Sugiro uma visualização interativa de dados.

Quando você passa o mouse sobre um panda, as 'conexões' são exibidas. Os relacionamentos podem ser mostrados com linhas e/ou com código de cores, por exemplo, para mostrar mãe/pai/irmão. Você também pode reorganizar o pandas para trazer as imagens da 'família' para outro plano visual acima da página principal, para que seja mais fácil ver a família unida do que espalhada por toda a tela.

O mais complicado é se você deseja mostrar irmãos relacionados via mãe ou irmãos relacionados via pai. Talvez isso possa ser uma alternância que o usuário define.

Ex:

  • Alternar está definido para mostrar irmãos relacionados via mãe
  • Passe o mouse sobre um panda para ver sua família (este panda recebe um destaque especial, digamos amarelo)
  • Após a rolagem, a família é reorganizada e mostra-se bem como uma árvore, conforme descrito abaixo, conectado por linhas ... Mãe está no topo da árvore.
  • Mãe mostrada delineada em rosa
  • Irmãos mostrados delineados em verde
  • Pai de cada irmão mostrado destacado em azul acima de cada irmão e do panda atual
  • Você precisa de uma maneira de fechar essa visão de família ... quando o usuário fecha essa visão, os pandas retornam à sua posição original na tela principal.
7
milesmeow

A estrutura da "árvore genealógica" de pandas que você está tentando representar é um gráfico acíclico direcionado . É não um árvore . Isso nem sempre pode ser representado em 2D sem linhas que se cruzam.Com 700 nós e 2 ancestrais cada, é provável que seja confuso.

As ferramentas de visualização de gráficos podem ajudar com esse problema. Comece com um simples webapp para ter uma ideia (coloque todos os mother->child e father->child pares na lista).

Programas mais avançados como yFiles e GraphViz são adequados para gráficos grandes e complexos. Veja galeria para ter uma idéia dos possíveis resultados.

Outra abordagem é tentar simplificar o problema, por exemplo, com árvores ancestrais/descendentes focadas em cada indivíduo em particular.

3
dbkk

Um filhote só pode ter uma mãe e pai. Por que os relacionamentos devem ser agrupados por "família"? Parece que você deve apenas agrupá-los por DNA, não por pares mãe/pai.


ATUALIZAÇÃO:

Agrupar por (Pai <> Filho <> Mãe) [~ # ~] não [~ # ~] (Pai/Mãe = Filho_A, Filho_B, etc .)

Apenas trace quem está relacionado com quem pela mãe e pelo pai, não acompanhe quem são os irmãos e as irmãs ... a menos que seja por motivo de acasalamento. Se você estiver comparando por motivos de acasalamento à população em geral, basta fornecer uma porcentagem ou uma classificação de aptidão no que se refere à sobreposição genética.

ATUALIZAÇÃO 2:

Andi , esta é a página de índice do Panda:

Nesse caso, como você planeja agrupar o Panda's onde um ou mais dos pais são "Desconhecidos".

2
blunders