/**
* example application of Zachary Forest Johnson's CoxcombChart class for ActionScript 3
*
* shows the popularity of car colors 2003 - 2006
*
* shows percentage of cars manufactured of each color
*
* Source: DuPont Herberts Automotive Systems, Troy, Mich. 2006 DuPont Automotive Color Popularity Survey Results. Web: www.automotive.dupont.com
*
*/
package
{
import com.indiemaps.charting.coxcomb.CoxcombChart;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(backgroundColor='#ffffff', width='800', height='400')]
public class CarColors extends Sprite
{
[Embed(systemFont="Helvetica", fontName="Helvetica", mimeType='application/x-font')]
private static var _ignoreMe:String;
[Embed(systemFont="Helvetica", fontName="Helvetica", fontWeight="bold", mimeType='application/x-font')]
private static var _ignoreMe2:String;
private var dataset2003:Array = new Array(
{ realLabel : "white", label : "", suvTruck : 22, luxury : 31 },
{ realLabel : "black", label : "", suvTruck : 12, luxury : 11 },
{ realLabel : "silver", label : "silver", suvTruck : 17, luxury : 41 },
{ realLabel : "gray", label : "", suvTruck : 9, luxury : 0 },
{ realLabel : "blue", label : "", suvTruck : 9, luxury : 4 },
{ realLabel : "red", label : "", suvTruck : 16, luxury : 4 },
{ realLabel : "yellow", label : "", suvTruck : 0, luxury : 4 },
{ realLabel : "green", label : "", suvTruck : 7, luxury : 0 },
{ realLabel : "brown", label : "", suvTruck : 6, luxury : 1 },
{ realLabel : "other", label : "other", suvTruck : 2, luxury : 4 }
);
private var dataset2004:Array = new Array(
{ label : "white", suvTruck : 20, luxury : 29 },
{ label : "black", suvTruck : 12, luxury : 12 },
{ label : "silver", suvTruck : 16, luxury : 26 },
{ label : "gray", suvTruck : 10, luxury : 0 },
{ label : "blue", suvTruck : 12, luxury : 9 },
{ label : "red", suvTruck : 14, luxury : 9 },
{ label : "yellow", suvTruck : 1, luxury : 4 },
{ label : "green", suvTruck : 5, luxury : 0 },
{ label : "brown", suvTruck : 9, luxury : 11 },
{ label : "other", suvTruck : 1, luxury : 1 }
);
private var dataset2005:Array = new Array(
{ label : "white", suvTruck : 21, luxury : 18 },
{ label : "black", suvTruck : 10, luxury : 16 },
{ label : "silver", suvTruck : 16, luxury : 20 },
{ label : "gray", suvTruck : 17, luxury : 5 },
{ label : "blue", suvTruck : 12, luxury : 13 },
{ label : "red", suvTruck : 11, luxury : 7 },
{ label : "yellow", suvTruck : 1, luxury : 6 },
{ label : "green", suvTruck : 4, luxury : 5 },
{ label : "brown", suvTruck : 7, luxury : 10 },
{ label : "other", suvTruck : 1, luxury : 1 }
);
private var dataset2006:Array = new Array(
{ label : "white", suvTruck : 26, luxury : 25 },
{ label : "black", suvTruck : 13, luxury : 22 },
{ label : "silver", suvTruck : 16, luxury : 16 },
{ label : "gray", suvTruck : 13, luxury : 12 },
{ label : "blue", suvTruck : 10, luxury : 7 },
{ label : "red", suvTruck : 11, luxury : 7 },
{ label : "yellow", suvTruck : 1, luxury : 6 },
{ label : "green", suvTruck : 4, luxury : 3 },
{ label : "brown", suvTruck : 6, luxury : 2 },
{ label : "other", suvTruck : 1, luxury : 1 }
);
private var coxcombsContainer:Sprite = new Sprite();
private var annotations:Sprite = new Sprite();
public function CarColors()
{
super();
addChild(coxcombsContainer);
coxcombsContainer.x = annotations.x = 180;
addChild(annotations);
var luxuryLabel:TextField = new TextField();
luxuryLabel.defaultTextFormat = new TextFormat("Helvetica",14,0xEC087D,true);
luxuryLabel.text = "Luxury cars";
var suvTruckLabel:TextField = new TextField();
suvTruckLabel.defaultTextFormat = new TextFormat("Helvetica",14,0xEC087D,true);
suvTruckLabel.text = "SUV/Trucks";
annotations.addChild(luxuryLabel); annotations.addChild(suvTruckLabel);
luxuryLabel.autoSize = "right";
suvTruckLabel.autoSize = "right";
luxuryLabel.y = 100 - .5 * luxuryLabel.textHeight;
suvTruckLabel.y = 300 - .5 * suvTruckLabel.textHeight;
luxuryLabel.x = suvTruckLabel.x = -150;
createCoxcombs();
}
private function createCoxcombs():void {
var max:Number = getMax([dataset2003, dataset2004, dataset2005, dataset2006], ['suvTruck', 'luxury']);
var colorsArray:Array = [0xffffff, 0x000000, 0xdddddd, 0xaaaaaa, 0x0000ff, 0xff0000, 0xffff00, 0x00ff00, 0x884400, 0xffffff];
var strokeColorsArray:Array = [0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xEC087D];
for (var year:int=2003; year<2007; year++) {
var luxuryChart:CoxcombChart = new CoxcombChart(this['dataset'+year],200,colorsArray,strokeColorsArray,0,max,false,"label","luxury");
var suvTruckChart:CoxcombChart = new CoxcombChart(this['dataset'+year],200,colorsArray,strokeColorsArray,0,max,false,"label","suvTruck");
if (year == 2003) {
suvTruckChart.showLabels("vertical", { font : "Helvetica", color : 0x333333 });
}
luxuryChart.x = suvTruckChart.x = (year-2003) * 160;
luxuryChart.y = 100; suvTruckChart.y = 300;
coxcombsContainer.addChild(luxuryChart); coxcombsContainer.addChild(suvTruckChart);
var yearLabel:TextField = new TextField();
yearLabel.defaultTextFormat = new TextFormat("Helvetica",16,0xcccccc,false);
yearLabel.text = String(year);
yearLabel.autoSize = "left";
annotations.addChild(yearLabel);
yearLabel.x = luxuryChart.x - .5 * yearLabel.width;
yearLabel.y = .5 * (suvTruckChart.y - luxuryChart.y) + luxuryChart.y - .5 * yearLabel.height - 5;
}
}
private function getMax(arrays:Array, props:Array):Number {
var max:Number = 0;
for each (var array:Array in arrays) {
for each (var obj:Object in array) {
for each (var prop:Object in props) {
if (obj[prop] > max) max = obj[prop];
}
}
}
return max;
}
}
}