D3图未使用统一数据进行更新
D3 graph not updating with uniform data
我正在绘制条形图。奇怪的是,条形图适用于唯一的数据,但当用完全相同的数据更新时,图形不会更新。这不是一个缩放/间距问题,因为代表数据的rect
根本没有生成。
这是一个JSFiddle演示我的问题。
更多信息
条形图的数据格式如下:
data.push({
temperature: 10,
humidity: 20,
light: 30
});
条形图为每个属性创建一个单独的条形图。属性由这种类型的对象表示,以帮助分隔和命名条形图:
// type objects
typeObject = {
temperature: {
string: "temperature", //type name
class: "temp", //css class for styling
initDis: 0, //defines where to place first bar
dis: 3, //defines space between the next temp bar
base: tempBase, //the <g> element base
color: "#A6E22E" //color
},
humidity: {
...
},
...
};
而且,每次添加数据时,这些类型对象都会被迭代并传递到以下函数中,以生成d3"更新模式":
var createBarsForCategory = function (type) {
var bars;
//`data` has been updated to an array containing newly added data
bars = type.base.selectAll("rect")
.data(data, function(d) {
return d[type.string];
});
//general update transition
bars.transition().duration(500).attr("x", function(d, i) {
return i * (m.bar.w + m.bar.space) * type.dis + m.bar.w * type.initDis;
});
// enter
bars.enter()
.insert("rect")
.attr("class", type.class)
.attr("width", m.bar.w)
.attr("height", function (d) {
return 0;
})
.attr("x", function (d, i) {
return i * (m.bar.w + m.bar.space) * type.dis + m.bar.w * type.initDis;
})
.attr("y", function (d) {
return scales.yscale(0);
})
.transition().delay(100).duration(1000)
.attr("height", function (d) {
return scales.yscale(0) - scales.yscale(d[type.string]);
})
.attr("y", function (d) {
return scales.yscale(d[type.string]);
})
;
// remove
bars.exit().remove();
};
提前感谢您抽出时间。
我已经更新了你的小提琴http://jsfiddle.net/pyLh7tcn/33/第173-178行有以下代码:
bars = type.base.selectAll("rect")
.data(data);
现在,随机数据集和统一数据集都在正确绘制。
希望这能有所帮助。
相关文章:
- 更新数据,而不是用javascript和jquery将其添加到我的表中
- JQGrid使用服务器编辑后的更新数据刷新数据
- 使用odata 4的jaydata 1.5和保存/更新数据时的错误
- 使用引导时间选取器时,没有更新数据ng模型值
- AngularJS中超时后没有更新数据
- jQuery动态更新数据键和值
- 在简单的可重用 D3 图表中更新数据
- Node/Express 无法正确更新数据模型
- 如何在jQuery中的单个保存按钮上更新数据和添加数据
- 如何使用Jquery更新数据确认属性中的消息
- 更新数据后保留D3图的位置
- 使用$watch更新数据,ng重复不反映更改
- 在OpenCart中,我们如何实时更新数据
- 表单在每个页面中 - 仅在特定页面上处理它 - 如果当前不在页面上 - 重定向 - 否则 - 使用 AJAX 更新数据
- 调整窗口大小时更新数据属性
- Firebase赢得't更新数据
- Rails和jQuery-尝试使用setTimeout主动更新数据
- Lawnchair.js未更新数据
- 更新数据时的React.js生命周期
- enter() 和 exit() 如何检测 D3 中的更新数据