<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>testD3-18-update.html</title>
<script type="text/javascript" src="http://localhost:8080/spring/js/d3.v3.js"></script>
</head>
<body>
<button>单击更新</button>
<br>
<p>单击添加</p>
<br>
<a>单击删除</a>
<br>
<script type="text/javascript">
var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13,
11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ];
var w=600;
var h=250;
var barPadding = 1;
var xScale=d3.scale.ordinal()
.domain(d3.range(dataset.length))
.rangeRoundBands([0,w],0.05);
var yScale=d3.scale.linear()
.domain([0,d3.max(dataset)])
.range([0,h]);
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", function(d, i) {
return xScale(i);
})
.attr("y", function(d) {
return h - yScale(d);
})
.attr("width", xScale.rangeBand())
.attr("height", function(d) {
return yScale(d);
})
.attr("fill", function(d) {
return "rgb(0, 0, " + (d * 10) + ")";
});
svg.selectAll("text")
.data(dataset)
.enter()
.append("text")
.text(function(d) {
return d;
})
.attr("text-anchor", "middle")
.attr("x", function(d, i) {
return xScale(i)+xScale.rangeBand()/2;
})
.attr("y", function(d) {
return h - yScale(d) + 14;
})
.attr("font-family", "sans-serif")
.attr("font-size",function(d) {
return xScale.rangeBand()/2;
})
.attr("fill", "white");
d3.select("a")
.on("click",function(){
dataset.shift();
xScale.domain(d3.range(dataset.length));
var bars=svg.selectAll("rect")
.data(dataset);
bars.exit()
.transition()
.duration(500)
.attr("x", w)
.remove();
});
d3.select("p")
.on("click",function(){
var maxValue=75;
var newNumber =Math.floor(Math.random()*maxValue);
dataset.push(newNumber);
xScale.domain(d3.range(dataset.length));
var bars=svg.selectAll("rect")
.data(dataset);
var texts=svg.selectAll("text")
.data(dataset);
bars.enter()
.append("rect")
.attr("x",w);
texts.enter()
.append("text");
bars.transition()
.duration(500)
.attr("x", function(d, i) {
return xScale(i) ;
})
.attr("y", function(d) {
return h - yScale(d) ;
})
.attr("width", xScale.rangeBand())
.attr("height", function(d) {
return yScale(d);
})
.attr("fill", function(d) {
return "rgb(0, 0, " + (d * 10) + ")";
});
texts.transition()
.duration(500)
.text(function(d) {
return d;
})
.attr("text-anchor", "middle")
.attr("x", function(d, i) {
return xScale(i)+xScale.rangeBand()/2;
})
.attr("y", function(d) {
return h - yScale(d) + 14;
})
.attr("font-family", "sans-serif")
.attr("font-size", "12px")
.attr("fill", "red");
});
d3.select("button")
.on("click",function(){
var numValues=dataset.length;
dataset=[];
var maxValue=75;
var newNumber;
for(var i=0;i<numValues;i++){
newNumber=Math.floor(Math.random()*maxValue);
dataset.push(newNumber);
}
yScale.domain([0,d3.max(dataset)]);
svg.selectAll("rect")
.data(dataset)
.transition()
.delay(function(d,i){
return i/dataset.length*1000;
})
.duration(2000)
.ease("linear")
.attr("y",function(d){
return h-yScale(d);
})
.attr("height",function(d){
return yScale(d);
});
svg.selectAll("text")
.data(dataset)
.text(function(d) {
return d;
})
.attr("text-anchor", "middle")
.attr("x", function(d, i) {
return xScale(i)+xScale.rangeBand()/2;
})
.attr("y", function(d) {
return h - yScale(d) + 14;
})
.attr("font-family", "sans-serif")
.attr("font-size", "12px")
.attr("fill", "red");
});
</script>
</body>
</html>