尝试将三维子地块添加到matplotlib地物

尝试将三维子地块添加到matplotlib地物,matplotlib,subplot,mplot3d,Matplotlib,Subplot,Mplot3d,所以我试着创建一个图形,从数据点显示一个3d图,以及其他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.plo

所以我试着创建一个图形,从数据点显示一个3d图,以及其他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”对象没有属性“变形”


我正在使用matplotlib 0.99.3,如果您有任何帮助,我们将不胜感激,谢谢

创建三维轴的首选方法是给出
投影
关键字:

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。

我正在寻找一种方法,用nice
fig,axes=plt.subplot(…)
快捷方式创建我的3D绘图,但由于我刚刚浏览过,我想分享这个网站顶部的一个报价

版本1.0.0中新增:此方法是创建三维轴的首选方法

注 在版本1.0.0之前,创建三维轴的方法是不同的。对于使用旧版本matplotlib的用户,将ax=fig.add_子图(111,projection='3d')更改为ax=Axes3D(fig


因此,如果必须使用,应强调“来自mpl_toolkits.mplot3d导入Axes3D”一行是必要的,即使您从未直接使用Axes3D。如果没有该导入,add_子图(111,projection='3d')将失败,表示无法识别投影'3d'。使用“导入mpl\u工具箱.mplot3d”也可以。本教程中的方法是使用
fig.gca(projection=“3d”)
(而不是
添加子批次
),这似乎不起作用。但你的方法确实如此。也许只是因为我使用的是过时的版本,但他们可能应该更新示例!我认为不再需要mpl_toolkits.mplot3d import Axes3D中的
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')