Skip to content

Commit 59ea934

Browse files
authored
feat: add ScatterTracer and ScatterRenderer (algorithm-visualizer#298)
1 parent f84321c commit 59ea934

File tree

5 files changed

+66
-0
lines changed

5 files changed

+66
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@import "~common/stylesheet/index";

Diff for: src/core/renderers/ScatterRenderer/index.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import React from 'react'
2+
import {Scatter} from 'react-chartjs-2'
3+
import Array2DRenderer from '../Array2DRenderer'
4+
5+
const convertToObjectArray = ([x, y]) => ({ x, y })
6+
const colors = ['white', 'green', 'blue', 'red', 'yellow', 'cyan']
7+
8+
class ScatterRenderer extends Array2DRenderer {
9+
renderData() {
10+
const { data } = this.props.data
11+
12+
const datasets = data.map((series, index) => (
13+
{
14+
backgroundColor: colors[index],
15+
data: series.map(s => convertToObjectArray(s.value)),
16+
label: Math.random(),
17+
radius: (index + 1) * 2,
18+
}))
19+
20+
const chartData = {
21+
datasets,
22+
}
23+
24+
return <Scatter data={chartData} options={{
25+
legend: false,
26+
animation: false,
27+
layout: {
28+
padding: {
29+
left: 20,
30+
right: 20,
31+
top: 20,
32+
bottom: 20,
33+
},
34+
},
35+
scales: {
36+
yAxes: [
37+
{
38+
ticks: {
39+
beginAtZero: false,
40+
},
41+
}],
42+
xAxes: [
43+
{
44+
ticks: {
45+
beginAtZero: false,
46+
},
47+
}],
48+
},
49+
}}/>
50+
}
51+
}
52+
53+
export default ScatterRenderer

Diff for: src/core/renderers/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export { default as Array2DRenderer } from './Array2DRenderer';
55
export { default as Array1DRenderer } from './Array1DRenderer';
66
export { default as ChartRenderer } from './ChartRenderer';
77
export { default as GraphRenderer } from './GraphRenderer';
8+
export { default as ScatterRenderer } from './ScatterRenderer';

Diff for: src/core/tracers/ScatterTracer.js

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Array2DTracer } from 'core/tracers';
2+
import { ScatterRenderer } from 'core/renderers';
3+
4+
class ScatterTracer extends Array2DTracer {
5+
getRendererClass() {
6+
return ScatterRenderer;
7+
}
8+
}
9+
10+
export default ScatterTracer;

Diff for: src/core/tracers/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export { default as Array2DTracer } from './Array2DTracer';
55
export { default as Array1DTracer } from './Array1DTracer';
66
export { default as ChartTracer } from './ChartTracer';
77
export { default as GraphTracer } from './GraphTracer';
8+
export { default as ScatterTracer} from './ScatterTracer';

0 commit comments

Comments
 (0)