试图将一个3d子图添加到matplotlib图中

时间:2011-12-14 19:46:18

标签: matplotlib subplot mplot3d

所以我试图创建一个数字,从数据点呈现一个3d图,以及3个其他子图中的3个投影图。我可以毫无问题地为投影添加子图,但是当我尝试将3维图放入图中时,事情会适得其反。

这是我的代码:

def plotAll(data):
    fig = plt.figure()
    plot_3d = fig.add_subplot(221)
    ax = Axes3D(plot_3d)  
    for i,traj in enumerate(data.values()):
        ax.plot3D([traj[0][-1]],[traj[1][-1]],[traj[2][-1]],".",color=[0.91,0.39,0.046])    
    #plot_12v13 = fig.add_subplot(222)
    #plot_projections(data,0,1)
    #plot_13v14 = fig.add_subplot(223)
    #plot_projections(data,1,2)
    #plot_12v14 = fig.add_subplot(224)
    #plot_projections(data,0,2)
    #plt.plot()

抛出:     'AxesSubplot'对象没有属性'transFigure'

我正在使用matplotlib 0.99.3,非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:9)

我正在寻找一种使用漂亮的fig, axes = plt.subplots(...)快捷方式创建3D图的方法,但由于我刚刚浏览了Matplotlib's mplot3d tutorial,因此我希望从此网站的顶部分享引用。< / p>

  

1.0.0版中的新功能:此方法是创建3D轴的首选方法。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
     

注意

     

在1.0.0版之前,创建3D轴的方法不同。对于那些使用旧版matplotlib的人,将ax = fig.add_subplot(111,projection ='3d')更改为ax = Axes3D(图)。

因此,如果您必须使用&lt; 1.0.0版本的Matplotlib,则应将其考虑在内。

答案 1 :(得分:3)

创建3D轴的首选方法是提供projection关键字:

def plotAll(data):
    fig = plt.figure()
    ax = fig.add_subplot(221, projection='3d')
    for i,traj in enumerate(data.values()):
        ax.plot3D([traj[0][-1]],[traj[1][-1]],[traj[2][-1]],".",color=[0.91,0.39,0.046])    
    plot_12v13 = fig.add_subplot(222)
    plot_projections(data,0,1)
    plot_13v14 = fig.add_subplot(223)
    plot_projections(data,1,2)
    plot_12v14 = fig.add_subplot(224)
    plot_projections(data,0,2)
    plt.plot()

不幸的是,您没有提供具有合适数据的工作示例,因此我无法测试代码。另外,我建议您更新到更新版本的matplotlib。