HTMLcopy
1
<div id="container"></div>
CSScopy
8
1
html,
2
body,
3
#container {
4
width: 100%;
5
height: 100%;
6
margin: 0;
7
padding: 0;
8
}
JavaScriptcopy
x
1
var regions = ['Florida', 'Texas', 'Arizona', 'Nevada', 'California', 'New York', 'Utah'];
2
anychart.onDocumentReady(function () {
3
// create data set on our data
4
var dataSet = anychart.data.set([
5
['Revenue', 65207, 26666, 41284, 48078, 88626, 96246, 26700],
6
['Services Revenue', 22512, 40973, 25299, 19772, 47969, 69278, 24186],
7
['Fixed Costs', -16361, -17580, -19979, -16066, -16099, -16979, -17404],
8
['Sales and Marketing Costs', -44059, -37883, -23080, -24733, -28260, -30234, -28889],
9
['Variable Costs', -22784, -27992, -25085, -13448, -10444, -24553, -17181]
10
]);
11
12
// create waterfall chart
13
var chart = anychart.waterfall();
14
15
chart.labels().enabled(true).position('auto').background('#f6f6f6');
16
// set chart title
17
// chart.title('Income Statement by Region');
18
regions.forEach(function (region, index) {
19
var data = dataSet.mapAs({x: 0, value: index + 1});
20
21
chart
22
.waterfall()
23
.data(data)
24
.name(region);
25
});
26
27
// set labels settings
28
29
// get stack labels
30
var stackLabels = chart.stackLabels();
31
32
// enable stack labels and set Y offset for them
33
stackLabels
34
.enabled(true)
35
.format('{%stack}')
36
.offsetY(10);
37
38
// setup stack labels background
39
stackLabels.background()
40
.enabled(true)
41
.stroke('#e6e6e6')
42
.fill('#f6f6f6');
43
44
// set legend settings
45
// chart.legend().enabled(true).itemsSourceMode('default');
46
47
chart.addTotal({x: 'Variable Costs', name: 'Total'});
48
49
// set title tooltip
50
chart.tooltip().titleFormat('{%SeriesName}');
51
52
// set container id for the chart
53
chart.container('container');
54
// initiate chart drawing
55
chart.draw();
56
});