d3.js实现创建完整柱形图的代码介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了d3.js实现创建完整柱形图的代码介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2283字,纯文字阅读大概需要4分钟。
内容图文
本篇文章给大家带来的内容是关于d3.js实现创建完整柱形图的代码介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。d3js.org v5.9.2
之前只是各个部分的demo,现在将各部分整合起来,发现还是学到了不少东西
主要是加深了对scale(比例尺)的理解
代码
样式及数据
先是样式
<style> rect { fill: pink } text { font-size: 10px; } </style>
接着是数据及柱状图宽高等
const data = [3, 6, 10, 25], barWidth = 100, barHeight = 300, padding = { //svg留白用 top: 100, right: 100, bottom: 100, left: 100 };
创建比例尺
实践之后对比例尺与坐标轴的理解加深了一点
let barScale = d3.scaleLinear().domain([0, d3.max(data)]).range([0, barHeight]), yAxisScale = d3.scaleLinear().domain([d3.max(data), 0]).range([0, barHeight]),//y轴使用线性比例尺,注意domain输入域 xAxisScale = d3.scaleBand().domain([1, 2, 3, 4]).range([0, (barWidth - 1) * data.length]); //x轴使用scaleBand比例尺
barScale用于柱形图创建
yAxisScale用于y轴创建,注意domain()的输入域,否则刻度数值大小排列会相反
xAxisScale用于x轴创建,使用scaleBand序数比例尺
之前对比例尺的理解太过肤浅,这里也做了几个小实验
console.log(`barScale(0):` + barScale(0)); console.log(`yAxisScale(0):` + yAxisScale(0)); console.log(`xAxisScale(2):` + xAxisScale(2));
显示如下
对于barScale
与yAxisScale
,输入域相反,所以映射相反,把一篇他人很棒的总结放于文末
创建柱状图
let barContainer = d3.select('.chart') .attr('width', data.length * barWidth + padding.left + padding.right) .attr('height', barHeight + padding.top + padding.bottom) .selectAll('g') .data(data).enter().append('g') .attr('transform', (d, i) => { return 'translate(' + (padding.left + i * barWidth) + ',' + (padding.top + barHeight - barScale(d)) + ')' }); barContainer.append('rect') .attr('height', d => barScale(d)) .attr('width', barWidth - 1); barContainer .append('text') .text(d => d) .attr('y', 10) .attr('x', barWidth / 2 - 5);
这里使用了之前定义的padding对象的值进行部分留白
创建坐标轴
/** * 创造y轴 */ let yAxis = d3.axisLeft(yAxisScale); d3.select('.chart') .append('g') .attr('transform', 'translate(' + (padding.left - 10) + ',' + padding.top + ') ') .call(yAxis); /** * 创建X轴 */ let xAxis = d3.axisBottom(xAxisScale); d3.select('.chart') .append('g') .attr('transform', 'translate(' + (padding.left) + ',' + (padding.top + barHeight) + ')') .call(xAxis);
最后创建坐标轴
【相关推荐:JavaScript视频教程】
以上就是d3.js实现创建完整柱形图的代码介绍的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的d3.js实现创建完整柱形图的代码介绍全部内容,希望文章能够帮你解决d3.js实现创建完整柱形图的代码介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。