我使用Jupyter Notebook来分析数据集 . 笔记本中有很多情节,其中一些是3d图 .
我想知道是否有可能使3d绘图具有交互性,所以我可以在以后更详细地使用它?
也许我们可以在上面添加一个按钮?点击它可以弹出一个3d图,人们可以缩放,平移,旋转等 .
我的思想:
1. matplotlib,%qt
这不适合我的情况,因为我需要在3d情节后继续绘图 . %qt
将干扰以后的情节 .
2. mpld3
mpld3
在我的情况下几乎是理想的,不需要重写任何东西,与matplotlib兼容 . 但是,它只支持2D绘图 . 我没有看到任何关于3D的计划(https://github.com/mpld3/mpld3/issues/223) .
3.散景visjs
在 bokeh
库中没有找到任何3d绘图的实际示例 . 我只找到https://demo.bokehplots.com/apps/surface3d,它使用 visjs
.
4. Javascript 3D情节?
因为我需要的只是线和外观,是否可以使用浏览器中的js将数据传递给js plot以使其具有交互性? (然后我们可能还需要添加3d轴 . )这可能类似于 visjs
和 mpld3
.
6 回答
尝试:
%matplotlib notebook
见jakevdp回复here
EDIT for JupyterLab users:
按照instructions安装jupyter-matplotlib
然后不再需要上面的魔术命令,如示例中所示:
最后,请注意Maarten Breddels'reply;恕我直言ipyvolume确实非常令人印象深刻(而且很有用!) .
有一个名为ipyvolume的新库可以做你想要的,the documentation shows live demos . 目前的版本不是作者的作者)
此列表中缺少Plotly . 我已经链接了python绑定页面 . 它最终具有动画和交互式3D图表 . 由于它是开放源代码,因此大部分内容都可以脱机使用 . 当然它正在与Jupyter合作
对于三维可视化pythreejs是可能在笔记本中使用的最佳方式 . 它利用笔记本电脑的交互式小部件基础架构,因此JS和python之间的连接是无缝的 .
一个更高级的库是bqplot,这是一个基于d3的iPython笔记本的交互式viz库,但它只做2D
我想出的解决方案是在iframe中使用vis.js实例 . 这显示了笔记本内部的交互式3D图,该图仍可在nbviewer中使用 . visjs代码借用了3D图形上的示例代码page
一个小笔记本来说明这一点:demo
代码本身:
你可以使用Plotly库 . 它可以直接在Jupyter笔记本中呈现交互式3D图 .
为此,首先需要运行Plotly:
您可能还希望通过运行来升级库:
在你之后的Jupyter笔记本中你可以写下这样的东西:
因此,下面的图表将在Jupyter Notebook中为您绘制,您将能够与它进行交互 . 当然,您需要提供您的具体数据而不是suggeseted数据 .