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
// The data used in this sample can be obtained from the CDN
3
// https://cdn.anychart.com/samples/marker-and-bubble-charts/multi-series-marker-chart/data.json
4
anychart.data.loadJsonFile(
5
'https://cdn.anychart.com/samples/marker-and-bubble-charts/multi-series-marker-chart/data.json',
6
function (data) {
7
var bestSportsmenTrainingData = anychart.data.set(data);
8
9
var mapTrainingData = bestSportsmenTrainingData.mapAs({
10
x: 1,
11
value: 2,
12
training: 0,
13
data: 3
14
});
15
16
var sportsmen1 = mapTrainingData.filter(
17
'training',
18
trainingFilter(1)
19
);
20
var sportsmen2 = mapTrainingData.filter(
21
'training',
22
trainingFilter(2)
23
);
24
var sportsmen3 = mapTrainingData.filter(
25
'training',
26
trainingFilter(3)
27
);
28
var sportsmen4 = mapTrainingData.filter(
29
'training',
30
trainingFilter(4)
31
);
32
var sportsmen5 = mapTrainingData.filter(
33
'training',
34
trainingFilter(5)
35
);
36
var sportsmen6 = mapTrainingData.filter(
37
'training',
38
trainingFilter(6)
39
);
40
var sportsmen7 = mapTrainingData.filter(
41
'training',
42
trainingFilter(7)
43
);
44
var sportsmen8 = mapTrainingData.filter(
45
'training',
46
trainingFilter(8)
47
);
48
var sportsmen9 = mapTrainingData.filter(
49
'training',
50
trainingFilter(9)
51
);
52
var sportsmen10 = mapTrainingData.filter(
53
'training',
54
trainingFilter(10)
55
);
56
57
// create scatter chart
58
var chart = anychart.scatter();
59
60
// turn on chart animation
61
chart.animation(true);
62
63
// set chart title text settings
64
chart
65
.title()
66
.enabled(true)
67
.padding([0, 0, 20, 0])
68
.text('Best sportsmen training data');
69
70
// set chart margin settings
71
chart.padding([10, 20, 0, 20]);
72
73
// grid settings
74
chart.yGrid(true).xGrid(true).xMinorGrid(true).yMinorGrid(true);
75
76
// set chart axes settings
77
chart
78
.xAxis()
79
.title('Average pulse during training')
80
.minorTicks(true);
81
chart.yAxis().title('Average power').minorTicks(true);
82
83
// create series with mapped data
84
chart.marker(sportsmen1).name('Christopher Sanchez');
85
chart.marker(sportsmen2).name('Judy Evans');
86
chart.marker(sportsmen3).name('Walter Burke');
87
chart.marker(sportsmen4).name('Daniel Williamson');
88
chart.marker(sportsmen5).name('Fred Peterson');
89
chart.marker(sportsmen6).name('Jason Anderson');
90
chart.marker(sportsmen7).name('Brenda Boyd');
91
chart.marker(sportsmen8).name('Joshua Hanson');
92
chart.marker(sportsmen9).name('William Ortiz');
93
chart.marker(sportsmen10).name('Roger Jones');
94
95
chart
96
.tooltip()
97
.useHtml(true)
98
.fontColor('#fff')
99
.format(function () {
100
return (
101
this.getData('data') +
102
'<br/>' +
103
'Power: <span style="color: #d2d2d2; font-size: 12px">' +
104
this.getData('value') +
105
'</span></strong><br/>' +
106
'Pulse: <span style="color: #d2d2d2; font-size: 12px">' +
107
this.getData('x') +
108
'</span></strong>'
109
);
110
});
111
112
chart
113
.legend()
114
.enabled(true)
115
// set legend position
116
.position('right')
117
// set legend align
118
.align('top')
119
// set layout of legend items
120
.itemsLayout('vertical');
121
122
// create marker
123
chart
124
.rangeMarker(0)
125
.scale(chart.xScale())
126
.from(125)
127
.to(140)
128
.fill('#CCFF99 0.7')
129
.layout('vertical');
130
131
// create marker
132
chart
133
.rangeMarker(1)
134
.scale(chart.xScale())
135
.fill('#99FFCC 0.7')
136
.from(140)
137
.to(155)
138
.layout('vertical');
139
140
// create marker
141
chart
142
.rangeMarker(2)
143
.scale(chart.xScale())
144
.from(155)
145
.to(175)
146
.fill('#FFCC66 0.5')
147
.layout('vertical');
148
149
// create marker
150
chart
151
.rangeMarker(3)
152
.scale(chart.xScale())
153
.from(175)
154
.to(200)
155
.fill('#FF3300 0.4')
156
.layout('vertical');
157
158
// set container id for the chart
159
chart.container('container');
160
// initiates chart drawing
161
chart.draw();
162
}
163
);
164
});
165
/**
166
* Helper function to bind data field to the local var.
167
* @param val
168
* @return {Function}
169
*/
170
function trainingFilter(val) {
171
return function (fieldVal) {
172
return fieldVal === val;
173
};
174
}