javascript-根据更新的数据(d3,js)调整矩形大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-根据更新的数据(d3,js)调整矩形大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1404字,纯文字阅读大概需要3分钟。
内容图文
![javascript-根据更新的数据(d3,js)调整矩形大小](/upload/InfoBanner/zyjiaocheng/665/b151c4af124749c192cecfdc8e48a5d0.jpg)
昨天我也发表了类似的文章,但经过一番评论后决定将其删除,因为我对自己的实际问题很误解,因此我已经进行了处理,希望能够更准确地解释它.
我想用新数据更新3个矩形的大小,但要使其相对于父级宽度保持不变,而不是根据数据更改直接调整其大小.
这是下面的一个小插曲;
http://plnkr.co/edit/eVfgniBQLbJLiMvAtWLI
本示例说明了我希望数据如何更改.这里的问题是轴的宽度将与父宽度无关地扩展/收缩.
我以为可以解决这个问题.
// OLD SOLUTION
x: d.y,
y: d.x,
x0: d.y0
// NEW SOLUTION
x: (d.y / calcTotal) * width,
y: d.x,
x0: (d.y0 / calcTotal) * width
这将计算每个数字相对于新数据集总数的百分比,然后将每个数字乘以父容器的宽度,以确保每个矩形每次都会在此处改变大小,但相对于父宽度保持不变.
但是,我不确定如何从此处修复其余功能,因为在使用新解决方案更新数据时,矩形不会在视觉上更改其大小?
我感谢任何建议!
谢谢
解决方法:
问题是您仅在创建块中的矩形中设置数据.
您应该像下面这样更新rect和group中的数据:
//update the group with new data
groups = svg.selectAll('g')
.data(dataset)
if (create) {
groups
.enter()
.append('g').attr('class', 'stacked')
.style('fill', function(d, i) {
return colours(i);
})
rects = groups.selectAll('.stackedBar')
.data(function(d, i) {
return d;
})
rects
.enter()
.append('rect').attr('class', 'stackedBar')
.attr('x', function(d) {
return xScale(d.x0);
})
.attr('height', height)
.attr('width', 0);
} else {
.//update the rectangle with new data
rects = groups.selectAll('.stackedBar')
.data(function(d, i) {
return d;
})
}
//now do transition.
工作代码here
内容总结
以上是互联网集市为您收集整理的javascript-根据更新的数据(d3,js)调整矩形大小全部内容,希望文章能够帮你解决javascript-根据更新的数据(d3,js)调整矩形大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。