Are you looking for 3D chart tools? InetSoft provides both free and commercial 3D chart tools. View a demo and try them out for free.
The following is documentation useful when creating a 3d chart using InetSoft's Charting API:
The Rect25Coord object is the same as the RectCoord object, but creates a 3D effect for elements. To create a Rect25Coord object, call the object constructor:
var rect = new Rect25Coord(xscale,yscale);
You can pass a set of Scale objects (e.g., 'xscale', 'yscale', etc.) to the constructor, or specify these later using the inherited RectCoord.setXScale(scale) and RectCoord.setYScale(scale) properties.
Example (Report or Viewsheet)
importPackage(inetsoft.graph)
importPackage(inetsoft.graph.data)
importPackage(inetsoft.graph.scale)
importPackage(inetsoft.graph.aesthetic)
importPackage(inetsoft.graph.element)
importPackage(inetsoft.graph.coord)
var arr = [["State", "Quantity"], ["NJ", 200], ["NY", 300]];
dataset = new DefaultDataSet(arr);
graph = new EGraph();
var elem = new IntervalElement("State", "Quantity");
var sscale = new CategoricalScale("State");
var qscale = new LinearScale("Quantity");
var coord = new Rect25Coord(sscale,qscale);
graph.setCoordinate(coord);
graph.addElement(elem);
The ParallelCoord object contains parallel coordinates against which data can be represented. To create a ParallelCoord object, pass a set of Scale objects to the ParallelCoord constructor:
var rect = new ParallelCoord(scale1,scale2,...);
You can pass a set of Scale objects (e.g., 'scale1', 'scale2', etc.) to the constructor, or specify this later using the ParallelCoord.setScales(scales) property.
Example (Report or Viewsheet)
importPackage(inetsoft.graph)
importPackage(inetsoft.graph.data)
importPackage(inetsoft.graph.scale)
importPackage(inetsoft.graph.aesthetic)
importPackage(inetsoft.graph.element)
importPackage(inetsoft.graph.coord)
var arr = [["Quantity","Total","Returns"], [200,800,10],
[175,1000,15],[50,300,20]];
dataset = new DefaultDataSet(arr);
graph = new EGraph();
var elem = new LineElement();
var qscale = new LinearScale("Quantity");
var tscale = new LinearScale("Total");
var rscale = new LinearScale("Returns");
var coord = new ParallelCoord(qscale,tscale,rscale);
elem.addDim("Quantity");
elem.addDim("Total");
elem.addDim("Returns");
graph.addElement(elem);
graph.setCoordinate(coord);
Specifies the set of parallel scales to use. These can also be specified as arguments to the constructor.
Parameter
scales Array of Scale objectsExample (Report or Viewsheet)
importPackage(inetsoft.graph)
importPackage(inetsoft.graph.data)
importPackage(inetsoft.graph.scale)
importPackage(inetsoft.graph.aesthetic)
importPackage(inetsoft.graph.element)
importPackage(inetsoft.graph.coord)
var arr = [["Quantity","Total","Returns"], [200,800,10],
[175,1000,15],[50,300,20]];
dataset = new DefaultDataSet(arr);
graph = new EGraph();
var elem = new LineElement();
var qscale = new LinearScale("Quantity");
var tscale = new LinearScale("Total");
var rscale = new LinearScale("Returns");
var coord = new ParallelCoord();
coord.setScales([qscale,tscale,rscale]);
elem.addDim("Quantity");
elem.addDim("Total");
elem.addDim("Returns");
graph.addElement(elem);
graph.setCoordinate(coord);
The TriCoord object contains triangular coordinates against which data can be represented. Although the triangular coordinate system contains three axes, it represents only two independent dimensions, and the three measures must sum to the maximum value of the scale. This makes the triangular coordinates effective for representing proportions of a fixed total.
To create a TriCoord object, call the TriCoord constructor:
var coord = new TriCoord(qscale);
You can pass a Scale object (e.g., 'qscale') to the constructor, or specify this later using the TriCoord.setScale(scale) property.
Example (Report or Viewsheet)
importPackage(inetsoft.graph)
importPackage(inetsoft.graph.data)
importPackage(inetsoft.graph.scale)
importPackage(inetsoft.graph.aesthetic)
importPackage(inetsoft.graph.element)
importPackage(inetsoft.graph.coord)
var arr = [["Quantity","Total","Returns"],
[50,50,100],[75,100,25],[100,100,0]];
dataset = new DefaultDataSet(arr);
graph = new EGraph();
var elem = new PointElement();
var qscale = new LinearScale("Quantity");
qscale.setMin(0);
qscale.setMax(200);
var spec = new AxisSpec();
spec.setGridStyle(GraphConstants.DOT_LINE);
qscale.setAxisSpec(spec);
var coord = new TriCoord(qscale);
elem.addDim("Quantity");
elem.addDim("Total");
elem.addVar("Returns");
graph.addElement(elem);
graph.setScale("Quantity", qscale);
graph.setScale("Total", qscale);
graph.setScale("Returns", qscale);
graph.setCoordinate(coord);
The first dimension ('Quantity') is represented on the bottom axis, the second dimension ('Total') on the right axis, and the third dimension ('Returns') on the left axis. Note that the third dimension must be added using addVar() rather than addDim().