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 path;
2
var selectedPoints = [];
3
var series;
4
anychart.onDocumentReady(function () {
5
// create stage
6
var stage = anychart.graphics.create('container');
7
8
// generate random data of 100 points (from 1 to 100 both inclusive) with values [1..10]
9
var data = [];
10
for (var i = 1, pointsCount = 101; i < pointsCount; i++) {
11
data.push([i, Math.random() * 10 + 1]);
12
}
13
// create scatter chart
14
var chart = anychart.scatter();
15
16
chart.title('Click on points to connect them');
17
18
// creating marker series with some settings
19
series = chart.marker(data);
20
series.size(3).tooltip(false);
21
series.hovered().size(5);
22
series.selected().size(3);
23
24
// change interactivity mode
25
chart.interactivity().selectionMode('single-select');
26
27
// set container
28
chart.container(stage);
29
chart.draw();
30
31
// creating path and set first point to (pixX, pixY) coords of firstSelectedPoint
32
path = stage.path().fill(null).stroke('#cecece');
33
34
// The first selected points
35
selectedPoints = [10, 24, 77];
36
37
chart.listen('pointsselect', function (e) {
38
// get point data
39
var point = e.point;
40
// we need this condition because if we select next point
41
// there will be another pointsselect event of deselecting
42
// previous point
43
if (!point.selected()) {
44
return true;
45
}
46
// add point to selected
47
selectedPoints.push(point.getIndex());
48
49
// get point's series
50
var pointSeries = point.getSeries();
51
52
// select previously selected points
53
pointSeries.select(selectedPoints);
54
55
connectPoint(point);
56
});
57
58
chart.listen('chartDraw', function () {
59
// redraw line on chart first draw and chart resize
60
path.zIndex(100000);
61
path.clear();
62
for (var j = 0; j < selectedPoints.length; j++) {
63
// Get the data iterator and select it to firstSelectedPoint
64
var iterator = series.data().getIterator();
65
iterator.select(selectedPoints[j]);
66
connectPoint(iterator, j === 0);
67
}
68
});
69
});
70
71
// helper function to draw line.
72
function connectPoint(pointData, isMoveTo) {
73
// get the pix coords of selected point
74
var pixX = series.transformX(pointData.get('x'));
75
var pixY = series.transformY(pointData.get('value'));
76
if (isMoveTo) path.moveTo(pixX, pixY);
77
else {
78
// draw segment
79
path.lineTo(pixX, pixY);
80
}
81
}