HTMLcopy
1
<div id="container"></div>
CSScopy
x
1
html, body, #container {
2
width: 100%;
3
height: 100%;
4
margin: 0;
5
padding: 0;
6
}
7
JavaScriptcopy
91
1
anychart.onDocumentReady(function () {
2
3
//number of additional empty points
4
var gapLength = 30;
5
6
// create data table on loaded data
7
var dataTable = anychart.data.table();
8
// The data used in this sample can be obtained from the CDN
9
// https://cdn.anychart.com/csv-data/csco-daily.js
10
dataTable.addData(get_csco_daily_data());
11
12
// map loaded data for the ohlc series
13
var mapping = dataTable.mapAs({'open': 1, 'high': 2, 'low': 3, 'close': 4});
14
15
// create stock chart
16
chart = anychart.stock();
17
18
chart.plot(0).ohlc(mapping);
19
20
// set container id for the chart
21
chart.container('container').draw();
22
23
24
//format tooltips to show 'NO DATA' on empty points
25
//instead of NaN for every field
26
var tooltips = chart.tooltip();
27
tooltips.format(function() {
28
if (this.close) {
29
return this.seriesName + '\n' +
30
'Open: ' + this.open + '\n' +
31
'High: ' + this.high + '\n' +
32
'Low: ' + this.low + '\n' +
33
'Close: ' + this.close;
34
} else {
35
return 'no data';
36
}
37
});
38
39
//get maximum X-coordinate and interval unit
40
var currrInterval = chart.grouping().getCurrentDataInterval();
41
var currentMax = chart.xScale().getFullMaximum();
42
addGap(currentMax, currrInterval);
43
44
//helper to make a gap
45
function addGap(currentMax, currrInterval) {
46
47
var interval = 0;
48
49
//define interval length according to
50
//the grouping level in milliseconds
51
switch (currrInterval.unit) {
52
case 'month':
53
interval = 1000 * 60 * 60 * 24 *30;
54
break;
55
case 'day':
56
interval = 1000 * 60 * 60 * 24;
57
break;
58
case 'hour':
59
interval = 1000 * 60 * 60;
60
break;
61
case 'minute':
62
interval = 1000 * 60;
63
break;
64
case 'quarter':
65
interval = 1000 * 60 * 60 * 24 *30 * 3;
66
break;
67
case 'second':
68
interval = 1000;
69
break;
70
case 'semester':
71
interval = 1000 * 60 * 60 * 24 *30 * 6;
72
break;
73
case 'third-of-month':
74
interval = 1000 * 60 * 60 * 24 * 10;
75
break;
76
case 'week':
77
interval = 1000 * 60 * 60 * 24 * 7;
78
break;
79
case 'year':
80
interval = 1000 * 60 * 60 * 24 *30 * 12;
81
break;
82
}
83
84
//add predefined number of empty points
85
//to the end of dataTable
86
for (var i = 0; i< gapLength; i++) {
87
dataTable.addData([[currentMax + interval * currrInterval.count * i, null, null, null, null, null]]);
88
}
89
}
90
91
});