Sind entsprechende Daten vorhanden, bspw. Bevölkerungsdaten o.ä., so können diese als Diagramm im cardo/cardo.Map dargestellt werden.
Bsp. Altersstatistik für einzelne Stadtteile der Stadt Cottbus.
Dazu sind Einstellungen für die Ebene unter Beschriftung/Ausgestaltung zu treffen und eine Datei diag.iws.design anzulegen.
Ein weiteres Beispiel ist in der Hilfe des IWAN-Mapservers zu finden.
Für oben dargestelltes Beispiel sind folgende Angaben im Management Center notwendig:
Datei diag.iws.design
if(not(firstCall));
firstCall=true;
// ChartDirector erzeugen
ret=CreateObjectOnce(cd,"ChartDirector.API");
// Breite / Höhe festlegen
// alle gleich groß
height=MathDiv($CURR_SIZE,$CURR_MAPSCALE)*2000;
width=height;
//the tilt angle of the pie
angle=60;
ret=CreateObject(data,"ARRAY");
ret=CreateObject(labels,"ARRAY");
//the Lables
labels.Add("unter 18");
labels.Add("18 bis 60");
labels.Add("60 bis 75");
labels.Add("über 75");
pieWidth=height*0.5;
pieHeight=height*0.5;
pieRadius=width*0.1;
depth=height/30;
fntSize=depth*0.3;
if(Compare(fntSize,6.5,lt));fntSize=6.5;endif;
if(Compare(fntSize,10,gt));fntSize=10;endif;
else;
ret=data.Empty();
endif;
c=cd.PieChart(int(width),int(height));
ret=c.setRoundedFrame();
//Create a PieChart object
//Set the center of the pie and the radius
ret=c.setPieSize(pieWidth,pieHeight,pieRadius);
//Set the depth and tilt angle of the 3D pie (-1 means auto depth)
ret=c.set3D(depth,angle);
ret=c.setTransparentColor(16777215);
//Daten aus den Spaltenwerten festlegen
ret=data.Add($ALTER_18);
ret=data.Add($ALTER_60);
ret=data.Add($ALTER_75);
ret=data.Add($ALTER_AB75);
//Labels erst ab ...
if(Compare($CURR_MAPSCALE,40000,le));
s=c.setLabelStyle("Verdanab.ttf",fntSize);
ret=s.setBackground(16711422, 12, 0);
ret=c.setLabelPos(fntSize*2, cd.LineColor)
ret=c.setData(data,labels);
else;
ret=c.setLabelStyle("", 8, cd.Transparent)
ret=c.setData(data);
endif;
// zeichnen und als binär ausgeben
DrawImage(c.makeChart2(0),0,0);
Die Einstellungen für die Ebene können Sie aus dem vorhergehenden Paragraphen übernehmen:
Folgendes Skript kann genutzt werden:
// ChartDirector erzeugen
ret=CreateObjectOnce(cd,"ChartDirector.API");
// Breite / Höhe festlegen
// alle gleich groß
height=MathDiv($CURR_SIZE,$CURR_MAPSCALE)*5000;
width=height;
// Anlegen Arrays Daten + Labels
ret=CreateObject(data,"ARRAY");
ret=CreateObject(labels,"ARRAY");
// Labels
ret=labels.Add("1");
ret=labels.Add("2");
ret=labels.Add("3");
ret=labels.Add("4");
ret=labels.Add("5");
ret=labels.Add("6");
ret=labels.Add("7");
// Daten aus den Spalten
ret=data.Add($UNBELASTET);
ret=data.Add($GERING_BELASTET);
ret=data.Add($MAESSIG_BELASTET);
ret=data.Add($KRITISCH_BELASTET);
ret=data.Add($STARK_VERSCHMUTZT);
ret=data.Add($SEHR_STARK_VERSCHMUTZT);
ret=data.Add($KEIN_WERT);
// Create a XYChart object of size 250 x 250 pixels
// c=cd.XYChart(int(width),int(height));
c=cd.XYChart(250,250);
// Set the plotarea at (30, 20) and of size 200 x 200 pixels
ret=c.setPlotArea(30, 20, 200, 200);
// Add a bar chart layer using the given data
ret=c.addBarLayer3(data);
// Set the labels on the x axis.
// error function "Can't find Variable"
ax=c.xAxis();
ret=ax.setLabels(labels);
//Graphik zeichnen
DrawImage(c.makeChart2(0),0,0);
Anpassung der Schriftgröße
ax=c.xAxis();
ret=ax.setLabelStyle("Arial",8)
Anpassung des Winkels
ax=c.xAxis();
ab=ax.setLabels(labels);
ret=ab.setFontAngle(45);
Ergänzung der Beschriftung der Labels, bswp für ein Tortendiagramm
labels.Add(printf(E"Elbe\n%.2f €",$BETRAG));
Zum Wort Elbe wird auf der nächsten Zeile die Spalte Betrag ausgelesen und formatiert ausgegeben. Der Prozentwert kommt direkt aus den Daten.
Formatierung der Daten des Labels auf keine Stelle nach dem Komma
ret=c.setLabelFormat(E"{label}\n{value|0}%");
Formatierung der Daten mit Tausender-Trennzeichen
ret=c.setNumberFormat(".");
Hinzufügen eines Titels für y-Achse für Balkendiagramm
ay=c.yAxis();
ret=ay.setLabelStyle("Calibri",fntSize)
ret=ay.setTitle("Angaben in Euro", "Calibri", fntSize, 0x555555);
Anpassen von Farben im Kreisdiagramm (hier bei 4 Spalten)
ret=CreateObject(colors,"ARRAY");
ret=colors.Add(0xFF00FF);
ret=colors.Add(0x9900FF);
ret=colors.Add(0x3D85C6);
ret=colors.Add(0x00FFFF);
ret=c.setColors2(8,colors);
Maßstabsabhängigkeit
if(Compare($CURR_MAPSCALE,15000,le));
layer=c.addBarLayer3(data,colors,labels);
//Labeldefinition
..
//Diagramm zeichnen
...
endif;