我想通过单击按钮来更新此 d3.js 条形图上的数据.(点击)
I want to update the data on this d3.js bar chart by clicking a button. (onclick)
我将如何通过单击我创建的按钮来告诉 D3 使用新的随机数据推送新图表? 现在我通过刷新页面来获取新数据,但我希望能够在不重新加载页面的情况下推送新图表。
</script>
var w = 500;
var h = 500;
var barPadding = 1;
var dataset = [ ];
for (var i = 0; i < 14; i++) {var newNumber = Math.round(Math.random() * 70);
dataset.push(newNumber);}
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var widthScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d,i) {return d;})])
.range([0,w]);
svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", 3)
.attr("y", function (d,i) {return i* 36;})
.attr("width", widthScale)
.transition()
.duration(1000)
.attr("height", h / dataset.length - barPadding)
.attr("fill", function(d) {return "rgb(0, 0, " + (d * 10) + ")";});
svg.selectAll("text")
.data(dataset)
.enter()
.append("text")
.text(function(d) {return d;})
.attr("x", function(d) {return widthScale(d) -17;})
.attr("y", function(d,i) {return (i * 36) + 23 ;})
.attr("fill", "white")
.attr("font-family", "sans-serif")
.attr("text-anchor", "middle");
您需要包括指定所选内容的.update()
和.exit()
。理想情况下,您应该更改代码,使其只调用.data(dataset)
一次。
var g = svg.selectAll("g")
.data(dataset);
然后您可以定义在.enter()
.update()
和.exit()
上要做什么。您的.enter()
将分别开始g.enter().append('rect')
和g.enter().append('text')
。虽然您需要处理.update()
但退出可以像移除对象一样简单。
g.exit()
.remove();
对于大多数数据,每个基准面的标识都是索引值。如果不是这种情况,那么您需要确保提供访问器
.data(data, function(d) { return d.name; })
我会在条形图上推荐本教程,这应该可以让您快速上手。如果太提前,请尝试第 1 部分开始。 您甚至可以删除用户单击按钮进行更新的要求。
相关文章:
- 用chart.js绘制条形图
- d3.js用按钮更新条形图工具提示
- 添加新数据时D3.JS条形图列偏移量
- Chart.js条形图:网格颜色和隐藏标签
- Chart.js 2.1.2条形图动画问题
- d3.js条形图转换无法正常工作
- d3.js组条形图不起作用
- 图表.js:条形图点击事件
- Raphael.js条形图及教程
- d3.js条形图未根据单击事件进行更新
- Chart.js条形图标签在悬停时被隐藏
- 将两个图形(饼图和条形图)并排对齐::d3-js
- D3.js条形图未显示
- D3.js更新堆叠条形图
- dc.js中带计数的条形图
- 如何为angular js条形图添加事件
- D3.js条形图:不显示 .text
- 如何在 d3.js 中创建分层条形图
- 动态生成条形图:JS, Jquery, CSS
- 在条形图Js 2.1.6上显示数据集值