如何在 d3.js 中更新条形图
How can I update a bar chart in d3.js?
每当用户单击按钮时,我都会尝试更新 d3.js 条形图。
我一直在绑定在某处添加过渡,如下所示,但它不会即时更新我的数据。
我正在使用这个jsfiddle。
我已经尝试了类似于以下代码的内容,但它没有更新我的数据:
btn.onclick = function(){
data.push({date: new Date(2013, 3, 10), total: 78});
updatePlot();
}
function updatePlot(){
d3.select('#graphTest').transition();
}
如何更改我的 updatePlot 方法,以便它更新条形图中的数据?
看起来你跳过了几个步骤。 D3实际上并没有在幕后为你做很多魔术。 您仍然需要推送数据并自己更新 DOM。 D3 只是提供了一个方便的编程模型来管理此过程。
因此,通过任何可视化,您都有以下有趣的部分:
- 数据数组
- DOM 节点
- 绑定到 DOM 节点的数据数组元素。
- DOM 节点上的属性和样式。
您的代码正在更新数据数组,但它不管理任何其他部分。 您需要将更新的数据驱动回 DOM(特别是使节点可见的属性/样式)。
因此,更新图将需要执行以下操作:
- 调用
selection.data
将新数据绑定到现有 DOM。 您可以定义一个键函数来控制数据映射到 DOM 节点的方式。 - 随心所欲地处理
enter
、exit
和update
选择。 - 根据新数据转换属性和样式。
对于#3,这不仅仅是调用selection.transition
的问题,而是需要考虑要转换的属性和样式。 在转换上调用attr
和style
与在选择中调用它们完全相同,只是 DOM 使用内插值更新多次,而不是仅使用最终值更新一次。
为了更好地理解这个过程,你应该阅读使用联接思考和使用转换。
相关文章:
- d3.js用按钮更新条形图工具提示
- d3.js条形图未根据单击事件进行更新
- 如何在d3中更新带有附带文本的条形图
- D3.js更新堆叠条形图
- 更新分组条形图(转换或删除元素组)
- d3堆叠条形图未正确更新
- 更新条形图并删除标签
- 更新时未从 D3 条形图中删除旧元素
- 如何在 d3.js 中更新条形图
- 更新 D3 条形图时调用 svg 元素的宽度的问题
- 我想通过单击按钮来更新此 d3.js 条形图上的数据.(点击)
- 更新 d3 中的条形图以生成多个图表
- nvd3多条形图状态在图例切换时更新错误
- 使用d3更新具有x轴时间线的图表上的各种长度的条形图数据
- 更新d3堆叠条形图/柱形图上的数据
- d3堆叠条形图不更新
- 更新d3.js中的堆叠条形图(包括JSFiddle)
- 基于用户's
- 在D3中使用过渡更新堆叠条形图
- 当从下拉过滤器中选择新源时,JavaScript D3条形图数据将不会更新