package demo.charts3d;
import org.zkoss.chart.Charts;
import org.zkoss.chart.Tooltip;
import org.zkoss.chart.YAxis;
import org.zkoss.chart.options3D.Options3D;
import org.zkoss.chart.plotOptions.ColumnPlotOptions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;
import demo.bar.ColumnStackedGroupedData;
public class Column3DStackComposer extends SelectorComposer<Window> {
@Wire
Charts chart;
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
chart.setModel(ColumnStackedGroupedData.getCategoryModel());
chart.getSeries().setStack("male");
chart.getSeries(1).setStack("male");
chart.getSeries(2).setStack("female");
chart.getSeries(3).setStack("female");
Options3D opt = chart.getOptions3D();
opt.setEnabled(true);
opt.setAlpha(15);
opt.setBeta(15);
opt.setViewDistance(25);
opt.setDepth(40);
chart.setMarginTop(80);
chart.setMarginRight(40);
YAxis y0 = new YAxis();
y0.setAllowDecimals(false);
y0.setMin(0);
y0.setTitle("Number of fruits");
chart.getPlotData().setYAxis(y0);
Tooltip tooltip = chart.getTooltip();
tooltip.setHeaderFormat("<b>{point.key}</b><br>");
tooltip.setPointFormat("<span style='color:{series.color}'>\u25CF</span> {series.name}: {point.y} / {point.stackTotal}");
ColumnPlotOptions column = chart.getPlotOptions().getColumn();
column.setStacking("normal");
column.setDepth(40);
}
}
package demo.bar;
import org.zkoss.chart.model.CategoryModel;
import org.zkoss.chart.model.DefaultCategoryModel;
public class ColumnStackedGroupedData {
private static CategoryModel model;
static {
model = new DefaultCategoryModel();
model.setValue("John", "Apples", 5);
model.setValue("John", "Oranges", 3);
model.setValue("John", "Pears", 4);
model.setValue("John", "Grapes", 7);
model.setValue("John", "Bananas", 2);
model.setValue("Joe", "Apples", 3);
model.setValue("Joe", "Oranges", 4);
model.setValue("Joe", "Pears", 4);
model.setValue("Joe", "Grapes", 2);
model.setValue("Joe", "Bananas", 5);
model.setValue("Jane", "Apples", 2);
model.setValue("Jane", "Oranges", 5);
model.setValue("Jane", "Pears", 6);
model.setValue("Jane", "Grapes", 2);
model.setValue("Jane", "Bananas", 1);
model.setValue("Janet", "Apples", 3);
model.setValue("Janet", "Oranges", 0);
model.setValue("Janet", "Pears", 4);
model.setValue("Janet", "Grapes", 4);
model.setValue("Janet", "Bananas", 3);
}
public static CategoryModel getCategoryModel() {
return model;
}
}