-
Notifications
You must be signed in to change notification settings - Fork 941
/
Rickshaw.Graph.Renderer.ScatterPlot.js
57 lines (41 loc) · 1.37 KB
/
Rickshaw.Graph.Renderer.ScatterPlot.js
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
Rickshaw.namespace('Rickshaw.Graph.Renderer.ScatterPlot');
Rickshaw.Graph.Renderer.ScatterPlot = Rickshaw.Class.create( Rickshaw.Graph.Renderer, {
name: 'scatterplot',
defaults: function($super) {
return Rickshaw.extend( $super(), {
unstack: true,
fill: true,
stroke: false,
padding:{ top: 0.01, right: 0.01, bottom: 0.01, left: 0.01 },
dotSize: 4
} );
},
initialize: function($super, args) {
$super(args);
},
render: function(args) {
args = args || {};
var graph = this.graph;
var series = args.series || graph.series;
var vis = args.vis || graph.vis;
var dotSize = this.dotSize;
vis.selectAll('*').remove();
series.forEach( function(series) {
if (series.disabled) return;
var opacity = series.opacity === undefined ? 1 : series.opacity;
var nodes = vis.selectAll("path")
.data(series.stack.filter( function(d) { return d.y !== null } ))
.enter().append("svg:circle")
.attr("cx", function(d) { return graph.x(d.x) })
.attr("cy", function(d) { return graph.y(d.y) })
.attr("r", function(d) { return ("r" in d) ? d.r : dotSize})
.attr("opacity", function(d) { return ("opacity" in d) ? d.opacity : opacity});
if (series.className) {
nodes.classed(series.className, true);
}
Array.prototype.forEach.call(nodes[0], function(n) {
n.setAttribute('fill', series.color);
} );
}, this );
}
} );