尝试向matplotlib图添加3d子图



所以我试图创建一个从数据点呈现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"对象没有属性"transFigure"

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

我正在寻找一种方法来创建我的3d图与漂亮的fig, axes = plt.subplots(...)快捷方式,但由于我刚刚浏览了Matplotlib的mplot3d教程,我想分享一个引用从这个网站的顶部。

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(fig)。

因此,如果您必须使用<1.0.0版本的Matplotlib,这应该考虑到

如果您想使用plt.subplots而不是plt.subplot(查看这里的区别),那么您可以这样做:

import matplotlib.pyplot as plt
from matplotlib import cm # for a scatter plot
from mpl_toolkits.mplot3d import Axes3D
fig, ax = plt.subplots(1,2,figsize=(10,10),subplot_kw=dict(projection='3d'))
sc1 = ax[0].scatter(x,y,z, c = true, cmap=cm.jet)
ax[0].set_title('True solution')
sc2 = ax[1].scatter(x,y,z c = y_pred, cmap=cm.jet)
ax[1].set_title('Predicted Solution')

嗯,我不知道如何使用plt.subplots将单个轴设置为3D。如果有人能评论一下就太好了。

创建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。

相关内容

  • 没有找到相关文章

最新更新