<?xml version="1.0" encoding="UTF-8"?>
<window apply="demo.area.AreaStackedComposer">
<charts id="chart" type="area"
title="Greenhouse gases from Norwegian economic activity" />
</window>
package demo.area;
import java.util.Map;
import org.zkoss.chart.AxisTitle;
import org.zkoss.chart.Charts;
import org.zkoss.chart.Series;
import org.zkoss.chart.plotOptions.AreaPlotOptions;
import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.Window;
public class AreaStackedComposer extends SelectorComposer<Window> {
@Wire
Charts chart;
public void doAfterCompose(Window comp) throws Exception {
super.doAfterCompose(comp);
chart.setSubtitle("Source: " +
"<a href=\"https://www.ssb.no/en/statbank/table/09288/\"" +
"target=\"_blank\">SSB</a>");
int seriesIndex = 0;
for (Map.Entry<String, Integer[]> data: AreaStackedData.getData()
.entrySet()) {
Series series = chart.getSeries(seriesIndex++);
series.setName(data.getKey());
series.setData(data.getValue());
}
AxisTitle title = chart.getYAxis().getTitle();
title.setText("Million tonnes CO₂-equivalents");
chart.getTooltip().setShared(true);
chart.getTooltip().setHeaderFormat("<span style=\"font-size:12px\"><b>{point.key}</b></span><br>");
chart.getPlotOptions().getSeries().setPointStart(2012);
AreaPlotOptions plotOptions = chart.getPlotOptions().getArea();
plotOptions.setStacking("normal");
plotOptions.setLineColor("#666666");
plotOptions.setLineWidth(1);
plotOptions.getMarker().setLineWidth(1);
plotOptions.getMarker().setLineColor("#666666");
}
}
package demo.area;
import java.util.LinkedHashMap;
import java.util.Map;
public class AreaStackedData {
private static final Map<String, Integer[]> data;
static {
data = new LinkedHashMap<>();
data.put("Ocean transport", new Integer[] {
13234, 12729, 11533, 17798, 10398, 12811,
15483, 16196, 15060, 13365, 13301
});
data.put("Households", new Integer[] {
6686, 6536, 6389, 6384, 6251, 5719,
5611, 5040, 5079, 5088, 4988
});
data.put("Agriculture and hunting", new Integer[] {
4812, 4872, 4961, 5001, 5070, 5035,
5045, 5004, 5015, 5076, 4935
});
data.put("Air transport", new Integer[] {
3502, 3844, 4139, 4351, 3802, 4020,
4461, 5074, 1558, 1247, 2694
});
data.put("Construction", new Integer[] {
2019, 2189, 2150, 2217, 2179, 2258,
2348, 2196, 2018, 2180, 2127
});
}
public static Map<String, Integer[]> getData() {
return data;
}
}