先来看看效果图
下面直接上源代码,html文件
实时刷新折线图
lineChart.js负责加载和刷新折线图
function loadLineChart(elementId, dataset) {
var svg = d3.select("#" + elementId);
var strs = svg.attr("viewBox").split(" ");
alert(dataset);
var width = strs[2];
var height = strs[3];
//外边框
var padding = {
top : 50,
right : 50,
bottom : 50,
left : 50
};
var names = new Array();
//计算GDP的最大值
var gdpmax = 0;
for (var i = 0; i < dataset.length; i++) {
var currGdp = d3.max(dataset[i].gdp, function (d) {
return d[1];
});
if (currGdp > gdpmax)
gdpmax = currGdp;
}
var gdpnumb = dataset[0].gdp.length;
for (var j = 0; j < gdpnumb; j++) {
names[j] = (dataset[0].gdp[j])[0];
}
alert(names);
var xScale = d3.scale.linear()
.domain([2000, 2013])
.range([0, width - padding.left - padding.right]);
// var xScale = d3.scale.ordinal()
// .domain(names)
// .rangeRoundBands([0, width - padding.left - padding.right]);
var yScale = d3.scale.linear()
.domain([0, gdpmax * 1.1])
.range([height - padding.top - padding.bottom, 0]);
//创建一个直线生成器
var linePath = d3.svg.line()
.x(function (d) {
return xScale(d[0]);
})
.y(function (d) {
return yScale(d[1]);
})
.interpolate("basis");
//定义两个颜色
var colors = [d3.rgb(0, 0, 255), d3.rgb(0, 255, 0)];
//添加路径
svg.selectAll("path") //选择
刚开始数据刷新了但是坐标轴木有刷新
引入
svg.selectAll("g.y.axis")
.call(yAxis);
以上就是d3.js实现实时刷新折线图的全部内容,希望给大家学习d3.js带来帮助。