我使用Jupyter Notebook对数据集进行分析。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
gallery中没有找到任何3d绘图的实际示例。我只找到了https://demo.bokeh.org/surface3d,它使用了visjs
。
4. Javascript 3D plot?
由于我需要的只是线和表面,是否可以在浏览器中使用js将数据传递到js plot以使其具有交互性?(然后我们可能还需要添加3d轴。)这可能类似于visjs
和mpld3
。
7条答案
按热度按时间c6ubokkw1#
尝试:
%matplotlib notebook
参见jakevdp回复here
JupyterLab用户编辑:
按照说明安装jupyter-matplotlib
那么就不再需要上面的魔法命令了,如下面的例子所示:
最后,请注意Maarten Breddels的reply;IMHO ipyvolume确实非常令人印象深刻(而且很有用!)。
yshpjwxd2#
你可以使用Plotly库。它可以直接在Jupyter Notebooks中渲染交互式3D绘图。
为此,您首先需要通过运行以下命令来安装Plotly:
您可能还希望通过运行以下命令来升级库:
之后,在Jupyter Notebook中,您可以编写如下内容:
因此,下面的图表将在Jupyter Notebook中为您绘制,您将能够与它进行交互。当然,您需要提供特定的数据而不是建议的数据。
pnwntuvh3#
有一个名为ipyvolume的新库可以做你想做的事情,the documentation shows live demos。当前版本不做网格和线,但git repo的master可以(0.4版本也可以)。(免责声明:我是作者)
hmae6n7t4#
Plotly在这个列表中丢失。我已经链接了python绑定页面。它肯定有动画和交互式3D图表。由于它是开源的,大部分都可以离线使用。当然,它可以与Jupyter一起使用
tjjdgumg5#
我想到的一个解决方案是在iframe中使用vis.js示例。这在笔记本中显示了一个交互式3D绘图,它仍然可以在nbviewer中工作。visjs代码是从3D图形page上的示例代码中借用的
一个小笔记本来说明这一点:demo
代码本身:
3phpmpom6#
对于3D可视化,pythreejs可能是笔记本中最好的方式。它利用了笔记本的交互式小部件基础设施,因此JS和python之间的连接是无缝的。
一个更高级的库是bqplot,它是一个基于d3的交互式viz库,用于iPython notebook,但它只支持2D
lhcgjxsq7#
plotly的
px.scatter_3d
是最简单的解决方案,我发现3d绘图动画后,尝试与matplotlib没有运气-你可以在这篇文章中找到一个很好的例子:Why does the size of my 3D Plotly Scatterplot randomly change?