所以我试图创建一个数字,从数据点呈现一个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,非常感谢任何帮助,谢谢!
答案 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。