MarkersChart.js
1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import React, { PureComponent } from 'react';
import $ from 'jquery';
class Markers extends PureComponent {
constructor(props) {
super(props);
this.data = [
{ data: this.generate(2, 0.6), points: { symbol: 'circle' } },
{ data: this.generate(3, 0.5), points: { symbol: 'square' } },
{ data: this.generate(4, 0.8), points: { symbol: 'diamond' } },
{ data: this.generate(6, 0.7), points: { symbol: 'triangle' } },
{ data: this.generate(7, 0.2), points: { symbol: 'cross' } },
];
}
componentDidMount() {
this.chart = this.createChart(this.data);
}
generate(offset, amplitude) { // eslint-disable-line
const result = [];
const start = 0;
const end = 10;
let point;
for (let i = 0; i <= 50; i += 1) {
point = ((start + i) / 50) * (end - start);
result.push([point, amplitude * Math.sin(point + offset)]);
}
return result;
}
createChart(data) {
return $.plot(this.$chartContainer, data, {
series: {
points: {
show: true,
radius: 3,
},
},
yaxis: {
ticks: [],
},
xaxis: {
min: 1,
},
grid: {
hoverable: true,
backgroundColor: { colors: ['#ffffff', '#ffffff'] },
borderWidth: 1,
borderColor: '#ffffff',
},
colors: ['#e2e1ff', '#f59f9f', '#ffd7de', '#8fe5d4', '#ace5d1', '#ffebb2', '#fff8e3'],
});
}
render() {
return (
<div ref={(r) => { this.$chartContainer = $(r); }} style={{ height: '200px' }} />
);
}
}
export default Markers;