HTMLcopy
1
<div id="container"></div>
CSScopy
6
1
html, body, #container {
2
width: 100%;
3
height: 100%;
4
margin: 0;
5
padding: 0;
6
}
JavaScriptcopy
x
1
anychart.onDocumentReady(function() {
2
3
// set stage
4
var stage = anychart.graphics.create("container");
5
6
// chart data
7
var data2005 = anychart.data.set([
8
["Quarter 1", 10000, 12000, 16000],
9
["Quarter 2", 12000, 15000, 17000],
10
["Quarter 3", 20000, 19000, 21000],
11
["Quarter 4", 16000, 21000, 22000]
12
]);
13
14
var data2006 = anychart.data.set([
15
["Quarter 1", 13000, 11700, 18000],
16
["Quarter 2", 10000, 12000, 11000],
17
["Quarter 3", 18000, 21000, 12000],
18
["Quarter 4", 21000, 20000, 22000]
19
]);
20
21
// get default color palette
22
var palette = anychart.palettes.distinctColors().items();
23
24
// create first chart
25
var chart2005 = anychart.line();
26
27
// set chart series and tooltips
28
chart2005.spline(data2005.mapAs({x: [0], value: [1]})).name("John");
29
chart2005.spline(data2005.mapAs({x: [0], value: [2]})).name("Jake");
30
chart2005.spline(data2005.mapAs({x: [0], value: [3]})).name("Peter");
31
32
// create second chart
33
var chart2006 = anychart.line();
34
35
// set chart series and tooltips
36
chart2006.spline(data2006.mapAs({x: [0], value: [1]})).name("John");
37
chart2006.spline(data2006.mapAs({x: [0], value: [2]})).name("Jake");
38
chart2006.spline(data2006.mapAs({x: [0], value: [3]})).name("Peter");
39
40
41
// create variables for legend
42
var legendsItemsArray = [];
43
var managersNames=["John","Jake","Peter"];
44
45
// create legend items from charts data
46
for(var managers=1;managers<data2005.data()[0].length;managers++){
47
var total2005 = 0;
48
var total2006 = 0;
49
for (var quarter=0;quarter<data2005.mapAs().getRowsCount();quarter++){
50
total2005+=data2005.data()[quarter][managers];
51
total2006+=data2006.data()[quarter][managers];
52
}
53
// create items array for legend
54
legendsItemsArray.push({
55
text: managersNames[managers-1],
56
iconType: "SPLINE",
57
iconStroke: palette[managers-1],
58
iconMarkerStroke: anychart.color.darken(palette[managers-1],0.2),
59
iconMarkerFill: palette[managers-1],
60
iconMarkerType: chart2005.markerPalette().itemAt([managers-1]),
61
meta: {legendText:"<b>2005 Result:</b> "+total2005+"<br><b>2006 Result:</b> "+total2006}
62
});
63
}
64
65
// create custom legend
66
var legend = anychart.standalones.legend();
67
legend.enabled(true);
68
legend.position("top");
69
var legendTitle = legend.title();
70
legendTitle.enabled(true);
71
legendTitle.text("2005 - 2006 Sales");
72
legendTitle.hAlign("center");
73
74
// settings for legend tooltips
75
legend.tooltip().useHtml(true).fontWeight(400);
76
// set source of content for legend tooltips
77
legend.tooltip().format(function(){
78
return this.meta.legendText;
79
});
80
81
// set legend items from array
82
legend.itemsFormatter(function(){return legendsItemsArray});
83
84
// set legend events
85
legend.listen("legendItemMouseOver", function(event) {
86
// get item's index
87
var index = event["itemIndex"];
88
// simulate hovering charts series
89
chart2005.getSeries(index).hover();
90
chart2006.getSeries(index).hover();
91
});
92
legend.listen("legendItemMouseOut", function(event) {
93
// get item's index
94
var index = event["itemIndex"];
95
// simulate unhovering charts series
96
chart2005.getSeries(index).unhover();
97
chart2006.getSeries(index).unhover();
98
});
99
legend.listen("legendItemClick", function(event) {
100
// get item's index
101
var index = event["itemIndex"];
102
// manage series
103
chart2005.getSeries(index).enabled(! chart2005.getSeries(index).enabled());
104
chart2006.getSeries(index).enabled(! chart2006.getSeries(index).enabled());
105
// manage clicked item visual appearance
106
if (chart2005.getSeries(index).enabled() == true){
107
legendsItemsArray[index].fontColor = "#777";
108
legendsItemsArray[index].iconStroke = palette[index];
109
legendsItemsArray[index].iconMarkerStroke= anychart.color.darken(palette[index], 0.2);
110
legendsItemsArray[index].iconMarkerFill= palette[index];
111
legend.itemsFormatter(function(){return legendsItemsArray});
112
}
113
else{
114
legendsItemsArray[index].fontColor = "#999";
115
legendsItemsArray[index].iconStroke = "#999";
116
legendsItemsArray[index].iconMarkerStroke= "#999";
117
legendsItemsArray[index].iconMarkerFill= "#999";
118
legend.itemsFormatter(function(){return legendsItemsArray});
119
}
120
});
121
122
legend.container(stage).draw();
123
124
// manage charts size and position
125
chart2005.bounds(0,0,"50%","100%").background().enabled(false);
126
chart2006.bounds("50%",0,"50%","100%").background().enabled(false);
127
chart2005.margin().top(stage.height() - legend.getRemainingBounds().getHeight());
128
chart2006.margin().top(stage.height() - legend.getRemainingBounds().getHeight());
129
chart2005.title().enabled(false);
130
chart2006.title().enabled(false);
131
chart2005.xAxis().title().text("Year 2005");
132
chart2006.xAxis().title().text("Year 2006");
133
chart2005.yAxis().title().enabled(false);
134
chart2006.yAxis().title().enabled(false);
135
136
// redraw legend if the first chart is redrawn
137
chart2005.listen(
138
"chartDraw",
139
function (){
140
// define legend bounds
141
var legendBounds = anychart.math.rect(
142
0,
143
0,
144
chart2005.container().width(),
145
chart2005.container().height()
146
);
147
148
// set bounds and draw legend
149
legend.parentBounds(legendBounds).draw();
150
});
151
152
chart2005.container(stage).draw();
153
chart2006.container(stage).draw();
154
});