| graphviz - en fallstudie | E-post |
|
digraph bamse { {AnnaCilla Amadeus HilmaJohanna AugustaBeata JohanHilmer Maivor} Brumhilda -> Maivor {Okänd1 Grizzly Okänd2 Viktoria Hebbe Brummenlufs Lisen} AnnaCilla -> Okänd1 AnnaCilla -> Grizzly AnnaCilla -> Okänd2 AnnaCilla -> Viktoria AugustaBeata -> Hebbe JohanHilmer -> Hebbe Maivor -> Lisen {Texas Bamse Brummelisa} Okänd1 -> Texas Viktoria -> Bamse Hebbe -> Bamse Brummenlufs -> Brummelisa Lisen -> Brummelisa {Snarkbjörn Brum Teddy NalleMaja Brumma} Texas -> Snarkbjörn Bamse -> Brum Bamse -> Teddy Bamse -> NalleMaja Bamse -> Brumma Brumelisa -> Brum Brumelisa -> Teddy Brumelisa -> NalleMaja Brumelisa -> Brumma } För att bygga en PNG-fil av DOT-filen öppnar man en terminal; går till den katalog där dot-filen ligger och skriver: $ dot bamse.dot -Tpng >bamse.png Öppna PNG-filen i din favorit-bildgranskare. Ett intressantare experimentJag har 'To kill a mockingbird' som textfil. Det vore
Sagt och gjort! Först använde jag 'sed' för att rensa allt utom bokstäver - läs Textbehandling för mer information om det. Här ska räknas dubletter blir till: Här ska ska räknas räknas dubletter Så jag öppnar filen i vim och utför följande kommandon (de som inleds med '#' är mina kommentarer) # dubblerar vartannat ord :%s/\(\w*\) \(w*\)/\1 \2 \2/g # inför radbrytning efter vartannat ord :%s/\(w*\) \(\w*\) \(\w*\)/\1 \2\r\3/g # raderar ensamma ord :%s/^\w*$//g # raderade tomma rader :g/^$/d # sparar och avslutar :wq Sedan är det dags att sortera listan och räkna dubletter... sort mockingbird.txt | uniq -c | sort -nr >word_pairs.dot Sedan måste filen få det format som 'graphviz' vill ha. digraph ord_dubletter{ ord1 -> ord2 } Det handlar bara om att byta ut mellanslag mellan ord mot ' -> ' och omsluta rasket med 'digrap orddubletter {' och '}'. Att skapa en graf över förbindelsen mellan alla ord i romanen gjorde att min dator rapporterade 'out of memory', så jag nöjde mig med de 250 vanligaste (första). Well, sedan är det bara att skapa PNG-bilden: dot word_pairs.dot -Tpng >mockingbird.png Resultatet finns att beskåda här. Ytterligare ett exempelVilka tal är jämnt delbara med vilka mellan 2-20? Hur ser det ut grafiskt? delare.dot digraph delare { 4-> 2 6-> {2 3} 8-> {2 4} 9-> 3 10-> {2 5} 12-> {2 3 4 6} 14-> {2 7} 15-> {3 5} 16-> {2 4 8} 18-> {2 3 6 9} 20-> {2 4 5 10} } (primtal, samt delbarhet med sig själv borttaget) Titta på PNG-filen. Läs mer om graphviz
Kommentarer (0)
![]() Skriv kommentar
|
|||
| < Föregående | Nästa > |
|---|

Ett snyggt släktträd över Bamse-ätten eller förbindelsen mellan ord i romanen 'To kill a mockingbird' kan man fixa med graphviz. För att åstadkomma det förstnämnda är allt som krävs att man installerar 'graphviz' (sudo apt-get install graphviz); klistrar in koden nedan i en fil och döper den till bamse.dot



