D3-我需要把我的“;draw”;或“;重新绘制“;函数可在单击时启用重绘
D3 - where do I need to put my "draw" or "redraw" function to enable redraw on click
我正在处理条形图。它显示了各州的流感疫苗接种率。点击图例,你可以在每个州的人口统计之间切换,太棒了!
但是,需要双击图例才能重新绘制。一次点击成功地杀死了条形图,但需要第二次点击才能重新绘制它们。
工作示例如下。我想我调用函数的顺序不对?
http://bl.ocks.org/greencracker/862062268ab398df4757
大致来说:
declarations
d3.json (read in json){
coerce data into numbers
draw(input)
}
function draw (input) {
draw bars here
draw legend here
legend.on("click", function (d) {return do_two_things(d);)
}
function kill() {
svg.selectAll(".bar")
.remove()
}
function do_two_things(input) {
kill();
draw(input);
}
问题在于转换。这意味着杆/轴不会立即移除。但是,重新绘制所有内容的代码是立即运行的。当该代码运行时,条形图仍然存在,被选中,数据与其匹配,因此.enter()
选择为空。
修复此问题的最简单方法是删除转换,请参见此处。如果你想保留它,你需要错开两个代码块,确保第二个代码块只有在所有内容都被删除时才执行。例如,您可以使用transition.each("end", ...)
事件处理程序来执行此操作,但这会使您的代码更加复杂。您也可以简单地使用setTimeout()
,请参阅此处。
相关文章:
- 我可以将javascript绘制函数更改为图像吗
- 如何使用按钮来调用在画布中绘制的函数
- Javascript setInterval()函数在绘制到画布时不起作用
- 如何确保包含多个$.ajax调用的函数完全同步运行,并允许在执行时重新绘制浏览器
- 如何将数据从表单传递到 php 函数到 javascript 以在画布上绘制而不刷新页面
- 我在 JavaScript 中的函数 initCanvas() 正在绘制矩形,但不在正确的位置
- 画布绘制图像函数在画布后插入 img
- 用于在画布上绘制的 JavaScript 函数(从 aspx 页面调用)会导致错误
- 如何将数据从struts2发送到javascript函数以绘制图表
- D3:在1张图中绘制3个csv,每个图都有一个函数,但有2个csv;不起作用
- 通过函数刷新/重新绘制数据表
- 在Javascript中使用相同的函数绘制矩形和正方形
- D3-我需要把我的“;draw”;或“;重新绘制“;函数可在单击时启用重绘
- 一个预加载图像的函数-现在需要绘制它们,但如何绘制
- 画布绘制函数
- 算法:用于将度数解析为x,y的函数,用于绘制SVG饼图
- 从画布构造函数原型中绘制图像
- 从另一个函数绘制时,画布线不保留
- 如何在D3中使用循环绘制许多函数
- 将函数绘制为<DIV>