Noder och bågar
29 Oct 2007På senaste tiden verkare jag stöta på grafer var jag än vänder mig - alltså inte grafer som kurvor och diagram, utan sådana med noder och bågar, som illustrerar hur diskreta objekt är relaterade till varandra. Är det inte vem som är vän med vem på Facebook, så är det artister och hur de liknar varandra på last.fm. I och med att grafer är ett så grundläggande begrepp inom datavetenskap är det kanske egentligen ingen överraskning att de blir en del av vår vardag i och med att IT i en mängder börjar bli just något väldigt vardagligt.
Trots alla denna data som har formen av grafer, har jag inte hittat så värst många verktyg för att visualisera dem. Alltså fick jag gräva fram lite kunskaper från min studietid, och har skrivit ett enkelt bibliotek för att skapa någorlunda förståndiga bilder av diverse grafer. Metoden bygger på vad jag förstår är den enklaste algoritmen för grafritning, en metod där man modellerar grafen som ett fysikaliskt system, där noder är elektriskt laddade partiklar (som stöter dem från varandra), och bågarna som fjädrar (som håller dem samman).
När man väl började var det svårt att sluta. Nu har jag grafer över:
- Artister och hur de hänger ihop, t.ex.: Artister relaterade till Nationalteatern
- Grannar på Last.fm, namnet inom parentes är respektive användares mest spelade artist
- Hur folk hänger ihop Ralf-o-Rolf
- Mina vänner på Facebook
- Hur olika webbplatser hänger ihop med varandra. Tenderar dock att bli oerhört rörigt, så jag väntar med något bra exempel på hur det kan se ut.
I händelse av att någon skulle vilja ha programkoden för egna experiment, så finns den här: SpringsGraph.tar.gz; kräver Python 2.5, pygame samt Beautiful soup.
Fler förslag på vad jag kan visualisera som en graf? Hör av dig.