JavaScript 控制台输出r2d3直接呈现到 RStudio 查看器可视化中,而不是 JavaScript 控制台。请参阅文档。
这似乎也是当
r2d3::r2d3(..., viewer = 'browser')
即,console.log()即使在浏览器中也不会输出到控制台。
是否有一种干净的方法来改变这种行为,以便将 D3.js 中的console.log()信息r2d3发送到浏览器控制台?
R2D3 会覆盖包含可视化代码的影子 DOM 中的控制台。这就是控制台行为被改变的原因 - 这可能看起来不错,但不允许更仔细地检查对象或隐藏控制台。
在创建可视化时似乎没有任何参数可以修改它。这留下了两个选项,修改包或向可视化添加一行 javascript。我会和后者一起去这里。
文档窗口本身仍然保留默认的控制台行为,因此我们可以使用它来重新定义影子 DOM 控制台行为。在可视化中,在第一行添加:
console = d3.window(svg.node()).console;
还有其他访问窗口的方法,但这应该足够了,并且可能是最短的,它不适用于 d3v3,它可以使用:
console = svg.node().ownerDocument.defaultView.console;
是的,它并不理想而且有点老套,但它肯定比更改 R 源代码更容易(并且在更新包时继续这样做)。