Sunday, June 2, 2024
 Popular · Latest · Hot · Upcoming
82
rated 0 times [  83] [ 1]  / answers: 1 / hits: 29600  / 12 Years ago, mon, november 26, 2012, 12:00:00

Here is a link to the jsfiddle



http://jsfiddle.net/jaimem/RPGPL/2/


Now the graph shows red color for all the circles.Is dere a way to show random colors on the circles.



Here is the d3.js code



 var data = [{ count: 202, year: 1590},
{ count: 215, year: 1592},
{ count: 179, year: 1593},
{ count: 199, year: 1594},
{ count: 134, year: 1595},
{ count: 176, year: 1596},
{ count: 172, year: 1597},
{ count: 161, year: 1598},
{ count: 199, year: 1599},
{ count: 181, year: 1600},
{ count: 157, year: 1602},
{ count: 179, year: 1603},
{ count: 150, year: 1606},
{ count: 187, year: 1607},
{ count: 133, year: 1608},
{ count: 190, year: 1609},
{ count: 175, year: 1610},
{ count: 91, year: 1611},
{ count: 150, year: 1612} ];



function ShowGraph(data) {
d3.selectAll('.axis').remove();
var vis = d3.select(#visualisation).append('svg'),
WIDTH = 500,
HEIGHT = 500,
MARGINS = {
top: 20,
right: 20,
bottom: 20,
left: 30
},
xRange = d3.scale
.linear()
.domain([
d3.min(data, function(d){ return parseInt(d.year, 10);}),
d3.max(data, function(d){ return parseInt(d.year, 10);})
])
.range([MARGINS.left, WIDTH - MARGINS.right]),
yRange = d3.scale
.linear()
.domain([
d3.min(data, function(d){ return parseInt(d.count, 10);}),
d3.max(data, function(d){ return parseInt(d.count, 10);})
])
.range([HEIGHT - MARGINS.top, MARGINS.bottom]),

xAxis = d3.svg.axis() // generate an axis
.scale(xRange) // set the range of the axis
.tickSize(5) // height of the ticks
.tickSubdivide(true), // display ticks between text labels
yAxis = d3.svg.axis() // generate an axis
.scale(yRange) // set the range of the axis
.tickSize(5) // width of the ticks
.orient(left) // have the text labels on the left hand side
.tickSubdivide(true); // display ticks between text labels
var transition = vis.transition().duration(1000).ease(exp-in-out);

transition.select(.x.axis).call(xAxis);
transition.select(.y.axis).call(yAxis);




vis.append(svg:g) // add a container for the axis
.attr(class, x axis) // add some classes so we can style it
.attr(transform, translate(0, + (HEIGHT - MARGINS.bottom) + )) // move it into position
.call(xAxis); // finally, add the axis to the visualisation

vis.append(svg:g)
.attr(class, y axis)
.attr(transform, translate( + (MARGINS.left) + ,0))
.call(yAxis);


var circles = vis.selectAll(circle).data(data)
circles.enter()
.append(svg:circle)
.attr(cx, function (d) {
return xRange(d.year);
})
.attr(cy, function (d) {
return yRange(d.count);
})
.style(fill, red)

circles.transition().duration(1000)
.attr(cx, function (d) {
return xRange(d.year);
})
.attr(cy, function (d) {
return yRange(d.count);
})
.attr(r, 10)

circles.exit()
.transition().duration(1000)
.attr(r, 10)
.remove();
}

More From » canvas

 Answers
134

you can also use d3.scale.category20(); to get some predefined random colors



Just define color scale as



 var color = d3.scale.category20();


Add add fill attribute to the circles as



 .attr(fill,function(d,i){return color(i);});

[#81798] Saturday, November 24, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jamir

Total Points: 736
Total Questions: 97
Total Answers: 101

Location: Cayman Islands
Member since Fri, Mar 4, 2022
2 Years ago
;