d3中文案例_D3.js柱状图例子
创建一个容器
let svg = d3.select("body").append("svg") //在body中添加一个svg容器
.attr("height", height) //设置宽高
.attr("width", width);
let tooltip=d3.select("body") //添加一个div,主要用来显示数据提示
.append("div")
.attr("class","tooltip") //添加一个类名,方便设置样式
.style("opacity",0.0); //设置透明度为0
创建坐标轴
function draw(data) {……}//我们所有绘制图标的代码均放在draw函数里
let xScale = d3.scale.ordinal() //创建一个序数尺度
.domain(d3.range(data.length)) //定义域
.rangeRoundBands([0, xAxisWidth], 0.2);//设置padding为0.2,设置每个rangeBand的留白长度
let yScale = d3.scale.linear() //创建一个线性尺度
.domain([0, d3.max(data)]) //值域
.range([0, yAxisWidth]);
let xAxis = d3.svg.axis() //创建x坐标
.scale(xScale) //设定xSacle尺度
.orient("bottom") //坐标位置在底部
yScale.range([yAxisWidth, 0]);
let yAxis = d3.svg.axis()
.scale(yScale)
.orient("left");
svg.append("g") //在容器中添加一个g容器,将x坐标的相关体全部扔进去
.attr("class", "axis x-axis") //设置类名
.attr("transform", "translate(" + padding.left + "," + (height - padding.bottom) + ")") //移动到合适的位置
.call(xAxis) //和xAxis绑定上
svg.append("g") //y轴和x轴类似
.attr("class", "axis y-axis")
.attr("transform", "translate(" + padding.left + "," + (height - yAxisWidth - padding.top) + ")")
.call(yAxis)
创建网格线
d3.selectAll("g.x-axis g.tick") //选择到刻度线
.append("line") //添加line,其实这也是网格线的原理
.classed("grid-line", true)
.attr("x1", 0)
.attr("y1", 0)
.attr("x2", 0)
.attr("y2", - (xAxisWidth));
d3.selectAll("g.y-axis g.tick")
.append("line")
.classed("grid-line", true)
.attr("x1", 0)
.attr("y1", 0)
.attr("x2", yAxisWidth)
.attr("y2", 0);
创建柱状图
let updateRect = svg.selectAll("rect") //更新模式
.data(data);
let enterRect = updateRect.enter(); //进入模式
let exitRect = updateRect.exit(); //退出模式
enterRect.append("rect")
.attr("fill", "lightseagreen") //填充颜色
.attr("x", function (d, i) { //确定rect的位置,宽度,高度,跟scale绑定动态变化
return padding.left + xScale(i)
})
.attr("y", function (d) {
return height - padding.bottom - yScale(d)
})
.attr("width", xScale.rangeBand()) //宽度
.attr("height", function (d) {
return yScale(d)
})
.on("mousemove" ,function (d,i) {//绑定鼠标事件,d:数据,i:索引
d3.select(this) //this当前对象
.transition() //动画
.duration(100) //持续事件
.attr("fill","green"); //变色
tooltip.html(d) //为数据提示框添加对象对应的数据
.style("left",(d3.event.pageX)+"px")//确定数据提示框
.style("top",(d3.event.pageY -20)+"px")
.style("opacity",.5)
})
.on("mouseout",function (d,i) {
d3.select(this)
.transition()
.duration(100)
.attr('fill','lightseagreen');
tooltip.style("opacity",0.0)
});
updateRect.attr("fill", "lightseagreen")
.attr("x", function (d, i) {
return padding.left + xScale(i)
})
.attr("y", function (d) {
return height - padding.bottom - yScale(d)
})
.attr("width", xScale.rangeBand())
.attr("height", function (d) {
return yScale(d)
});
exitRect.remove();
注意
svg.selectAll('*').remove();//在draw函数添加这行代码,在刷新时候移除svg,否则会覆盖
d3中文案例_D3.js柱状图例子相关推荐
- d3中文案例_D3.js实现动态仪表盘案列
这次给大家带来D3.js实现动态仪表盘案列,D3.js实现动态仪表盘的注意事项有哪些,下面就是实战案例,一起来看一下. 本文介绍了D3.js实现简洁实用的动态仪表盘的示例,分享给大家,具体如下: 动态 ...
- d3中文案例_D3+svg 案例
//domain():设置尺度的输入范围,参数以数组的形式传入. //range() :输出范围的设置 var padding =30; var xScale = d3.scale.linear(). ...
- d3中文案例_D3js初探及数据可视化案例设计实战
摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...
- d3 几种常用的柱状图
本文参照了echarts罗列了几种常用的柱状图在d3中的画法 基本柱状图 使用d3直方图布局 d3的所有布局都不会帮你作图,只是帮你按需处理的数据. 使用d3.randomBates构造一组1000个 ...
- php正则换成js正则,php正则替换_php使用正则替换过滤掉js脚本例子
摘要 腾兴网为您分享:php使用正则替换过滤掉js脚本例子,榛果民宿,掌上书院,夜读小说,学堂里等软件知识,以及中辉期货,车易行违章,孢子,必应壁纸app,鲁证期货,dota26.88,ip摄像头ap ...
- d3力导向图增加节点_d3.js力导向图节点如何都显示在边框内
最近用到d3.js中的force力导向图,想实现效果如下,所有城市节点都在可视范围内,如果超出有滚动条也可以. 遇到的问题是,当节点一多,有的节点就会跑到外面去,这边是通过加大charge相互作用力, ...
- d3 svg path添加文本_D3.js 力导向图的显示优化
D3.js 作为一个前端,说到可视化除了听过 D3.js 的大名,常见的可视化库还有 ECharts.Chart.js,这两个库功能也很强大,但是有一个共同特点是封装层次高,留给开发者可设计和控制的部 ...
- d3力导向图增加节点_D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线......
Java学习手记2--多线程 一.线程的概念 CPU执行程序,就好比一个人在干事情一样,同一个时间你只能做一件事情,但是这样的效率实在是太低了,在你用电脑的时候,听歌就不能浏览网页,看电影就不能下载视 ...
- js remove 当前元素_D3.js入门教程
作者:karen 转发链接:https://mp.weixin.qq.com/s/TFpywiD6PY7HMlKIpQwDFQ WHAT D3.js是一个JavaScript库操纵文档基于数据.D3帮 ...
最新文章
- lua中的魔法字符转义问题
- java: String的==与equals
- 中怎么构建ebug模式_自动挡中的“手自一体”,该怎么用?多少人把手动模式当成摆设?...
- 深度学习pytorch--多层感知机(三)
- 电脑上我的文档图标不见了怎么办
- 如何进行云主机带宽测试
- element提交图片限制一张_科研SCI论文图片常见问题和错误汇总
- excel统计行数_百万到亿级数据,快速统计查询
- 分布式链路追踪工具skywalking 介绍
- 使用yaml文件创建deployment来部署一个应用程序到k8s集群
- 鸿蒙冰心有其他途径得到吗,关索除了人遁礼包,还有其他途径能获得吗?
- 人人都是 DBA(IV)SQL Server 内存管理 (转)
- JDK9的32位版本下载
- PDF查看器之pdfvuer
- 2015 iMac如何绕过TMP安装Windows11(不用Parallels虚拟机实现macOS与Windows11双系统)
- 写给自己过去的一封信:成功=好习惯+自控力
- mac 给 iPhone 充电一直闪跳
- 【服务器数据恢复】服务器断电导致RAID报错的数据恢复案例
- 《SRE生存指南》金句分享
- 彼德原理(劳伦斯·彼德)