D3 4.0+在导入Jupyter Notebook时不会创建一个全局D3变量

D3 4.0+ does not create a global d3 variable when imported into Jupyter Notebook

本文关键字:D3 变量 全局 一个 创建 导入 Jupyter Notebook      更新时间:2023-09-26

使用JavaScript ReferenceError将失败:

from IPython.display import HTML, display
display(HTML("""
<script src="https://d3js.org/d3.v4.js"></script>
<script>
console.log(d3);
</script>
"""))

为什么?

等效D3版本3。X将工作(尽管在第二次尝试,对我来说):

from IPython.display import HTML, display
display(HTML("""
<script src="https://d3js.org/d3.v3.js"></script>
<script>
console.log(d3);
</script>
"""))

这是我能找到的关于这个话题最相关的问题/答案。

我有一个解决方案:

http://makeyourowntextminingtoolkit.blogspot.co.uk/2016/09/interactive-d3v4js-in-jupyter-notebook.html

本质上你需要使用require.js ..

这原来是由于d3导出自身的方式发生了内部变化。3.x分支版本的d3导出所有的内部作为全局变量(源代码);4.X分支版本不再这样做(源代码)。现在期望使用包管理器(如require.js),而导出则通过管道传输到该管理器。

详细信息请参见必要的GitHub问题。

你现在应该做的是:

<script src="scripts/require.js"></script>
<script>var d3 = require('d3')</script>

在此之后,一切都应该如预期的那样工作。