osx – 在iPython或iPython Notebook中显示可旋转的3D绘图

(Mac OSX 10.10.5)

我可以从matplotlib网站http://matplotlib.org/gallery.html#mplot3d中重现3D散点图http://matplotlib.org/examples/mplot3d/scatter3d_demo.html的示例代码,但是绘图将呈现为静态图像。我无法单击图形并动态旋转以查看3D绘图数据。

我已经使用示例代码实现了静态3D图,使用(a)终端内的ipython,(b)终端内的ipython笔记本,以及(c)从Anaconda发射器启动的ipython笔记本。

我认为我缺少一些非常基本的步骤作为假定的知识。

在过去的学习中,绘图已经打开了一个具有图形浏览器的GUI Python应用程序。 (下面的代码中的解决方案2打开这个。)也许我需要知道将输出图导出到该显示方法的代码? (是的,使用%matplotlib(仅)作为没有内联或笔记本的第一行,如代码块中的注释所示)

作为ipython笔记本中的一个例子:

    # These lines are comments
    # Initial setup from an online python notebook tutorial is below. 
    # Note the first line "%matplotlib inline" this is how the tutorial has it.
    # Two solutions 1. use: "%matplotlib notebook" graphs appear dynamic in the notebook.
    #               2. use: "%matplotlib" (only) graphs appear dynamic in separate window. 
    #    ( 2. is the best solution for detailed graphs/plots. )

    %matplotlib inline  
    import pandas as pd
    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D

    pd.set_option('html',False)
    pd.set_option('max_columns',30)
    pd.set_option('max_rows',10)


    # What follows is a copy of the 3D plot example code.
    # Data is randomly generated so there is no external data import.

    def randrange(n, vmin, vmax):
        return (vmax-vmin)*np.random.rand(n) + vmin

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    n = 100
    for c, m, zl, zh in [('r', 'o', -60, -25), ('b', '^', -30, -5)]:
        xs = randrange(n, 23, 50)
        ys = randrange(n, 0, 100)
        zs = randrange(n, zl, zh)
        ax.scatter(xs, ys, zs, c=c, marker=m)

    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')

    plt.show()

有人能识别我失踪的东西吗?

看看Python 3.3.6文档,第25.1节也许是tkinter包…

The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems.

我认为,这涉及GUI程序的开发,所以我不知道这是相关的。 (正确的,这不是解决方案所需要的。)

最佳答案
使用%matplotlib笔记本而不是%matplotlib内嵌在IPython笔记本中嵌入的交互式数字 – 这需要最新版本的matplotlib(1.4)和IPython(3.0)。

转载注明原文:osx – 在iPython或iPython Notebook中显示可旋转的3D绘图 - 代码日志