【发布时间】:2016-08-15 14:21:25
【问题描述】:
我正在努力将一个在 d3 svg 中做的项目移植到 d3 画布,我所拥有的基本上是一个通过刷的焦点+上下文,它是经典示例 http://bl.ocks.org/mbostock/1667367 的衍生产品,而我有一个简单的折线图面积图,但原理完全一样。
现在,我成功地将折线图从 ol'good svg d3 方法转换为新的画布驱动方式。澄清一下:
ctx.beginPath();
draw_line.context(ctx)(data);
ctx.lineWidth = 0.6;
ctx.strokeStyle = "rgb(26,188,156)";
ctx.stroke();
这就是我们正在谈论的东西。
现在,由于我在画布域中,我的印象是所有“与 svg 相关”的东西都不再起作用了,因为它们都依赖于从 svg 中提取的“g”对象,因为这就是为什么诸如“刷子”之类的东西似乎不再起作用了,这导致我来到这里。
我已经看到通过滚动和类似的东西缩放的示例(例如 http://bl.ocks.org/jgbos/9752277 ),另外我看到您也可以使用画布轻松检测滚动事件,但保持准确对我来说很棒我以前的方法相同(通过刷子方法的焦点+上下文)
是否有任何解决方法可以在 d3 中使用画布完成工作?
【问题讨论】:
-
d3画笔是一个用 SVG 创建的 控件,所以要使用它,您需要一些 SVG 组件。你在这里的最终目标是什么?你为什么要离开 SVG?除非您有极其复杂(即内存密集型)的可视化,否则它在很多方面都优于画布。我想你总是可以像在example 中那样混合两者 -
是的,我最终混合了两者,是的,我需要画布,因为我正在处理大量的数据。只是为了记录,这两种东西的混合真的很痛苦:)
-
你能不能把你的工作弄得一团糟,因为我面临着同样的问题,因为我搬到了 Canvas,现在我想要通过刷子方法获得焦点+上下文.
-
您是否在 Canvas 中实现了焦点 + 上下文缩放?