Ismerete Graphviz

Ismerete Graphviz

Van Unix ilyen szükséges eszköz című GraphViz tervezett rajz grafikonok. Ebben a post adok egy példát annak használatát. Azok, akik már ismerik a GrafVizom nem kíváncsi, jobb olvasni Dracula.

Egyéb, remélem, ez a poszt lesz ösztönzésére, hogy gondos tanulmányozása a kisalkalmazások.

Gondolat szokásosnál. Van config (.gv file), amellyel a grafikon adott leírást. Config Ez az ilyen tartalom:

digráf G "A" -> "B";
"B" -> "C";
"A" -> "C";
>

GraphViz vesz egy ilyen konfiguráció a bemeneti és kimeneti ad png | jpg | gif | SVG fájl A képen a grafikonon. részletesebb leírása a grafikon adható, ha kívánatos. Például adja a csúcsai a forma és szín, vastagság és tájolása a bordák, stb ..

Nem lakik ezen, az ember-oldalak minden részletet festett.

A szerkezet jön GraphViz több program, ha valamilyen okból az úgynevezett „szűrő”. Segítségével egy és ugyanazon a grafikonon lehet levonni a különböző módon. A lista és rövid leírás a program:

dot - szűrő rajz irányított gráf
Neato - szűrő rajz irányítatlan gráfokat

twopi - szűrő radiális elrendezések grafikonok

cirkó - szűrő körkörös elrendezés grafikonok
FDP - szűrni rajz irányítatlan gráfokat
sfdp - szűrő rajz nagy irányítatlan gráfok

Példák grafikonok megrajzolni őket, akkor képes lesz arra, hogy nézd meg a programokat a hivatalos honlapján.

Hozzunk létre egy nézetet, ha tisztelik mana, és nézett a weboldalon keresztül. Nagyszerű, most már tudjuk használni a tapasztalat, hogy megoldja grafviza semmilyen problémát.

Képzeljük el, hogy van néhány cég, és ezek a vállalatok az ügyfelek. Bármilyen okból, meg tudjuk keresni, hogy melyik cég kezeli az ügyfél, ha nem hajlandó a másik szolgáltatás a cég. Abban az esetben, mondjuk, egy web hosting, ez nagyon egyszerű.

A feladat -, hogy építsenek egy grafikon, amely a mozgást az ügyfelek vállalatonként.

Itt van egy szkriptet, amely .gv file:

use strict;
használja List :: Util QW / max shuffle /;
használat List :: MoreUtils QW / uniq /;
használja DBI;
használni állandó MIN_PERCENT => 5;

# Létrehoz egy észlelhető, és nem olyan fekete színekben
én @colors;
az én $ c (QW / 8 D egy kilenc F 6 /) az én $ m (QW / FF0000 00FF00 00FFFF FF00FF FFFF00 /) my $ t = $ m;
$ T =

# Vedd fel az adatokat az adatbázisból
my $ db = DBI-> connect (
"DBi: mysql: adatbázis: localhost", "user", "password",
0, RaiseError => null>
) Or die "ERROR: $ \ n!";

my $ res = $ db-> készíteni ($ query);
$ Étte-> execute () or die "Query failed: \ n \ n $ query";

# Elején a gráf leírás

Ismerete Graphviz

print „digráf G nyomtatási qq nodesep = 2;
mindist = 2;
>;
print "\ n";

# Maximális ügyfelek disszidált
my $ max_cnt = 1;

# Plusz és mínusz az ügyfelek száma a cég
én% plusz;
én% mínusz;

while (én ($ -tól, $ a, $ CNT) = $ kitétellel> fetchrow_array ()) $ data = $ cnt;
$ Plus + = $ cnt;
$ Mínusz + = $ cnt;
$ Max_cnt = $ cnt> $ max_cnt. $ Cnt. $ Max_cnt;
nyomja @sources, $ -tól;
nyomja @sources, $ a;
>

# Shuffle, hogy lehetséges volt
# Újrarajzolás a grafikon kicsit másképp
@sources = shuffle uniq @sources;

Ismerete Graphviz

én $ src (@sources) # levágta egy kis cég „lemorzsolódás”
következő if (max ($ plusz, mínusz $) <$max_cnt*MIN_PERCENT/100);

# Vegyünk egy másik szín
my $ color = $ színben [$ i ++];
my $ delta = $ plusz - mínusz $;
# Leírás Count tetején, az adott cég
print "" $ src "[label =" $ src \\ n + "int ($ plusz)" - "int ($ mínusz) ....", delta: $ delta "style =" töltött”fontcolor = "# 111111", color = "# $ szín",”.
# Azoknak, akik kedvelik téglalap :)
# "Alak =" box”, szélesség = 4, magasság = 1" .
"Betûméret = 16]; \ n";
az én $ a (billentyűk%>) my $ CNT = $ data;
my $ százalék = $ CNT * 100 / $ max_cnt;
# Nagyon „vékony” ív nem levezetni
if ($ százalék> MIN_PERCENT) # levezetni ív leírása
print "" $ src "->" $ a "[label =" $ CNT "fontcolor =" # $ szín "color =" # $ szín "penwidth =". int (A + $ százalék * 12/100). "Betûméret =" int (12 + $ százalék * 12/100) "]; \ n" ..;
>
>
>
# Vége a gráf leírás
print "\ n> \ n";

Példa GV-fájl felhasználásával készült ez a script, akkor nézd meg itt. Egyértelmű, hogy az összes adatot, hogy nem igaz. Gv jelentése átváltandó SVG követő módon:

cirkó gráf-fake.gv -Tsvg -o fake.svg

Itt lehet letölteni a megvásárolt grafikonon. És aki lusta letölteni (vagy hirtelen SVG nem derül ki senkit), így a kép sokkal kevésbé:

Ismerete Graphviz

A nagyobb fogyasztók száma, akik elhagyták megfelelnek az vastagabb csíkokra. Ezen kívül minden cég a saját színe.

Úgy is lehet változtatni a méret a vertex függetlenül attól, hogy sok új ügyfelet a cég megkapta, de van valami maradt meg tökéletesen. Talán jobb, ha kijön.

Nem is olyan régen kaptam egy levelet az 1. blog olvasók. Az alkotó a levél kivizsgál azt a széket, amelyen képzett, nem elég figyelmet fordítanak a programozás is érdekel, ne írja alá.

A közeljövőben már említettem párszor, hogy nem egészen értem, hogyan lehet fejleszteni a Haskell igaz, hatalmas projektek. Volt néhány esetben, de priemuschestvenno aggaszt.

A közeljövőben, azt valójában végül játszik számítógépes játékokat. De néha, amikor meg kell ölni időt, hogy szükség van rájuk merül fel. Vannak kis játék alatt UNIX, amit igazán szeret.

Redis (távoli szótár Server) - egy nem-relációs nagy teljesítményű adatbázis. Redis tartja az összes adatot a memóriában, az adatok hozzáférhetők gombot. Adott esetben egy másolatot az adatok tárolhatók.

Egy kicsit korábban, azt akartam, nagyon rendes dolog -, hogy itt-ott keletkezett egy értesítést arról, hogy a sarokban, amikor megkapja a legfrissebb e-mail tevékenységet. Különben is, én kellett az egyetlen értesítést.

Kapcsolódó cikkek