d3.js——给柱形图添加事件出现的问题总结
2021-06-15 19:05
阅读:391
YPE html>
标签:round char 不同 end html orm isp min 事先
首先做出一个动态的柱形图(这儿用的d3.js的版本是v3,用v4的话有些函数会发生变化)
效果图:
代码:
histogramTransitionEvent
现在像个这个动态的柱形图添加mouseover和mouseout事件。
做法:
1.去掉style样式中的.MyText类,直接在添加矩形的时候添加颜色属性
2.在添加矩形的时候添加事件
... //添加矩形和文字元素 var rectPadding = 4; var rects = svg.selectAll(".MyRect") .data(dataset) .enter() .append("rect") .attr("class","MyRect") .attr("transform","translate("+padding.left+","+padding.top+")") .attr("x",function(d,i){ return xScale(i)+rectPadding/2; }) .attr("width",xScale.rangeBand()-rectPadding) .attr("y",function(d){ var min = yScale.domain()[0]; return yScale(min); }) .attr("height", function(d){ return 0; }) .transition() .delay(function(d,i){ return i * 200; }) .duration(2000) .ease("bounce") .attr("y",function(d){ return yScale(d); }) .attr("height",function(d){ return height-padding.top-padding.bottom-yScale(d); }) .attr("fill","steelblue") //添加事件 .on("mouseover",function(d,i){ d3.select(this) .attr("fill","yellow"); }) .on("mouseout",function(d,i){ d3.select(this) .transition() .duration(500) .attr("fill","steelblue"); }); ...
但是这样会报错,会显示on不是一个函数
后来知道应该把on事件放在transition()之前,但是为啥这么做可以现在还不知道
... //添加矩形和文字元素 var rectPadding = 4; var rects = svg.selectAll(".MyRect") .data(dataset) .enter() .append("rect") .attr("class","MyRect") .attr("transform","translate("+padding.left+","+padding.top+")") .attr("x",function(d,i){ return xScale(i)+rectPadding/2; }) .attr("width",xScale.rangeBand()-rectPadding) //添加事件在 transition()之前 .on("mouseover",function(d,i){ d3.select(this) .attr("fill","yellow"); }) .on("mouseout",function(d,i){ d3.select(this) .transition() .duration(500) .attr("fill","steelblue"); }) .attr("y",function(d){ var min = yScale.domain()[0]; return yScale(min); }) .attr("height", function(d){ return 0; }) .transition() .delay(function(d,i){ return i * 200; }) .duration(2000) .ease("bounce") .attr("y",function(d){ return yScale(d); }) .attr("height",function(d){ return height-padding.top-padding.bottom-yScale(d); }) .attr("fill","steelblue"); ...
最终效果图:
这里面矩形图的教程来源:http://d3.decembercafe.org/pages/lessons/9.html
d3.js——给柱形图添加事件出现的问题总结
标签:round char 不同 end html orm isp min 事先
原文地址:http://www.cnblogs.com/weiyangoo/p/7273732.html
评论
亲,登录后才可以留言!