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
anychart.onDocumentReady(function () {
2
var data = [
3
{ x: 'Net Sales', value: 5085000 },
4
{ x: 'Cost of Sales', value: -1250450 },
5
{ x: 'Operating Expenses', value: -2350050 },
6
{ x: 'Other Income', value: 750000 },
7
{ x: 'Extraordinary Gain', value: -230050 },
8
{ x: 'Interest Expense', value: -500000 },
9
{ x: 'Taxes', value: 490000 }
10
];
11
12
// create waterfall chart with our data
13
var chart = anychart.waterfall(data);
14
15
// set chart title
16
chart.title('Income Statement for ACME Corp.');
17
18
// add arrow
19
var totalChangeArrow = chart.addArrow({
20
from: 'Net Sales',
21
to: 'Net Income'
22
});
23
24
// set arrow's label format
25
totalChangeArrow.label().format('${%Value}{scale:(1000000)(1)|(M)}');
26
27
// set connector stroke settings
28
chart.connectors().stroke('#e96a26', 1, '5 2');
29
30
// add subtotal points
31
chart.addTotal({x: 'Cost of Sales', name: 'Gross Income'});
32
chart.addTotal({x: 'Operating Expenses', name: 'Operating Income'});
33
chart.addTotal({x: 'Interest Expense', name: 'Net Profit Before Taxes'});
34
chart.addTotal({x: 'Taxes', name: 'Net Income'});
35
36
// set scale minimum
37
chart.yScale().minimum(0);
38
39
// format y-axis labels
40
chart.yAxis().labels().format('${%Value}{scale:(1000000)(1)|( mln)}');
41
42
// set x-axis labels settings
43
chart.xAxis().labels().rotation(-90);
44
45
// set labels settings
46
chart
47
.labels()
48
.enabled(true)
49
.format(function () {
50
if (this.isTotal) {
51
return anychart.format.number(this.absolute, { scale: true });
52
}
53
54
return anychart.format.number(this.value, { scale: true });
55
});
56
57
// set container id for the chart
58
chart.container('container');
59
// initiate chart drawing
60
chart.draw();
61
});