5.1.4 Stacked Data Model

StackedDataModel let stack dataModel one on another. It uses ChartDataModel as stacked data. Below is an example how to create ChartDataModels in order to stack them.

Creating simple StackedDataModel with 3 dataModels

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 * Creating first data model
*/
ArrayList<Object[]> list = new ArrayList<Object[]>();
list.add(new Object[] { "2006", new Double(5020.6) });
list.add(new Object[] { "2007", new Double(5857.0) });
list.add(new Object[] { "2008", new Double(7084.4) });
 
ChartDataModel dataModel1 = new ChartDataModel(DataModelUtil
		.convert(list));
/*
 * Creating second data model
 */
 
list = new ArrayList<Object[]>();
list.add(new Object[] { "2006", new Double(5865.0) });
list.add(new Object[] { "2007", new Double(7062.3) });
list.add(new Object[] { "2008", new Double(8284.4) });
 
ChartDataModel dataModel2 = new ChartDataModel(DataModelUtil
		.convert(list));
/*
 * Creating third data model
 */
list = new ArrayList<Object[]>();
list.add(new Object[] { "2006", new Double(6431.3) });
list.add(new Object[] { "2007", new Double(7586.6) });
list.add(new Object[] { "2008", new Double(8646.5) });
 
ChartDataModel dataModel3 = new ChartDataModel(DataModelUtil
		.convert(list));
/*
 * Creating fourth data model
 */
list = new ArrayList<Object[]>();
list.add(new Object[] { "2006", new Double(6661.5) });
list.add(new Object[] { "2007", new Double(7917.0) });
list.add(new Object[] { "2008", new Double(8277.0) });
 
ChartDataModel dataModel4 = new ChartDataModel(DataModelUtil
		.convert(list));
 
/*
 * Stacking data models
 */
StackedDataModel dm1 = new StackedDataModel(dataModel1);
StackedDataModel dm2 = dm1.setStackedModel(dataModel2);
StackedDataModel dm3 = dm2.setStackedModel(dataModel3);
StackedDataModel dm4 = dm3.setStackedModel(dataModel4);

StackedDataModel Demonstration

Figure 5.1.4.1 StackedDataModel Demonstration

View Source

It is also to possible to set by what data will be stacked - either by value or key using setKeyType() method.