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

(Mac OSX 10.10.5)

我可以从matplotlib网站http://matplotlib.org/gallery.html#mplot3d复制三维散点图的示例代码http://matplotlib.org/examples/mplot3d/scatter3d_demo.html ,但情节呈现为静态图像。 我不能点击图表并dynamic旋转查看3D绘图数据。

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

我想我错过了一些非常基本的步骤,如假定的知识。

在过去的学习中,绘图已经打开了一个GUIgraphics查看器的Python应用程序。 (下面代码中的解决scheme2打开了这个。)也许我需要知道的代码导出到显示方法的输出图? (是的,使用%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包…

tkinter包(“Tk接口”)是Tk GUI工具包的标准Python接口。 Tk和tkinter在大多数Unix平台以及Windows系统上都可用。

我认为,这与GUI程序的开发有关,所以我不确定这是否相关。 (正确,这不是解决scheme所需要的。)

使用%matplotlib notebook而不是%matplotlib inline来获取IPython笔记本中的embedded式交互式graphics – 这需要最新版本的matplotlib(1.4+)和IPython(3.0+)。