Ik ben een beginneling in visualisaties. Tegenwoordig kom ik regelmatig op grafieken gebaseerde data tegen die ik moet visualiseren. Verschillende soorten gegevens vereisen echter verschillende lay-outs. En aangezien ik niet genoeg ervaring heb, ben ik me niet bewust van de verschillende algoritmen voor grafieklay-out.
Ik zou graag een lijst willen hebben met algoritmen voor grafieklay-out met pseudo-code of code (in elke taal) die Ik kan verwijzen naar bij het implementeren van een grafiek.
Reacties
- Ik denk dat StackOverflow je betere antwoorden zal geven.
Answer
Je kunt beginnen met Wikipedia , het R-pakket igraph
heeft verschillende algoritmen die leuke leads / referenties kunnen opleveren, waaronder layout.random, layout.circle, layout.sphere, layout.fruchterman.reingold, layout.kamada.kawai, layout.spring, layout .reingold.tilford, layout.fruchterman.reingold.grid, layout.lgl, layout.svd en layout.norm
Antwoord
Als je meer geïnteresseerd bent in de algoritmen zelf dan in software die het gewoon zal doen (en dat zijn er veel), bekijk dan enkele artikelen van Yifan Hu , die een aardige introductie geven tot bepaalde soorten algoritmen (niet uitputtend).
Answer
Gibson, Faith en Vickers schreven een paper waarin verschillende relationele grafieklay-outtechnieken worden vergeleken, waarbij wordt geanalyseerd waar ze uitblinken en waar ze haperen. Hoewel ze geen pseudocode bevatten, bieden ze een goed overzicht dat u vervolgens kunt gebruiken om naar specifieke algoritmen te zoeken.
Opmerkingen
- De link hier links naar deze vraag (ik denk dat de auteur een fout heeft gemaakt) – je kunt de paper uit 2013 hier
en nog veel meer met Julia code hier Ik probeer een deel ervan te schrijven met Java. Er is een paper met de titel Graph Drawing and Analysis Library en De domeinspecifieke taal voor de lay-outspecificaties van grafieken door Renata Vaderna, Željko Vuković, Igor Dejanović en Gordana Milosavljević waarin de ze vergelijken hun bibliotheek met andere bibliotheken zoals JUNG . Daar is daar genoeg code om u op weg te helpen.