所以我试图创建一个从数据点呈现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。