Matplotlib三维平面上的二维绘图

2024-09-26 22:50:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在绘制航天器在其轨道上某个特定点的轨迹图。 我有一段代码可以在3dMatplotlib中生成一个3d线图(mycode和figure的一部分显示在这里)(我将每个数组中X、Y、Z内的点数大幅减少到~20个,以便更容易简单地复制和粘贴,因为原理是一样的):

#在

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
from numpy import *

XdS=[14.54156005,  14.53922242,  14.53688586,  14.53454823, 14.5322106 ,  14.52987297, 14.52753426,  14.52519555, 14.52285792,  14.52051922,  14.51818051, 14.51584073, 14.51350095, 14.51116117, 14.5088214 , 14.50648162, 14.50414076,  14.50179991,  14.49945906,  14.49711821]
YdS=[31.13035144,  31.12920087,  31.12805245,  31.12690188, 31.12575131,  31.12460073,  31.12345016,  31.12229745, 31.12114473,  31.11999201,  31.1188393 , 31.11768443, 31.11652957,  31.11537471, 31.11421984, 31.11306283, 31.11190582,  31.11074882,  31.10959181,  31.1084348]
ZdS=[3.94109446,  3.94060316,  3.94011186,  3.93962083,  3.93912926, 3.93863796,  3.93814639,  3.93765482,  3.93716325,  3.93667169, 3.93617985,  3.93568828,  3.93519618,  3.93470434,  3.9342125 , 3.9337204 ,  3.93322829,  3.93273592,  3.93224382,  3.93175144]

fig=plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(XdS,YdS,ZdS,c='black',linewidth=2)
ax.set_xlabel('XKSM (Saturn Radii)')
ax.set_ylabel('YKSM (Saturn Radii)')
ax.set_zlabel('ZKSM (Saturn Radii)')
plt.show()

#在

我要做的是能够在这个绘图的边/平面上绘制2d绘图X vs Y、X vs Z和Y vs Z,即在3个2d平面中显示3d轨迹,并在当前绘图的每个轴上显示它们。(实际上并不像听起来那么复杂,因为我已经有了轨迹的X,Y,Z值)。在这里,我发现了一个类似的例子,但是使用了所有的3d绘图功能,可以在:http://matplotlib.org/1.3.1/examples/mplot3d/contour3d_demo3.html:如果你检查了,检查一下链接,它将显示我试图实现的图像类型。在

^{pr2}$

理论上,这正是我所需要的,在某种程度上,它需要一个三维情况的平面视图。但是,我不能在三维轴上实现二维线绘制,也不能在二维打印中使用偏移命令(获取错误:TypeError:没有线属性“offset”)。在

是否有一个2d等效于3d“offset”命令,是否可以按我的要求在3d打印的平面上打印2d值?还有没有一种方法可以在初始化三维投影后绘制二维线?有没有人能给我一些建议/指出我的方向来帮助我实现这一目标?在

在此之前,我真诚地感谢你,如果你的文章有任何问题,我会道歉,这是我的第一篇!在


Tags: fromimport绘图matplotlib轨迹绘制pltax
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:12

试试这个:

xmin = min(XdS)
ymax = max(YdS)
zmin = min(ZdS)
length_of_array = len(XdS)
xmin_array = [xmin] * length_of_array
ymax_array = [ymax] * length_of_array
zmin_array = [zmin] * length_of_array
fig=plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(XdS,YdS,ZdS,zdir='z', c='r')
ax.plot(XdS,YdS,zmin_array, zdir='z', c='g')
ax.plot(xmin_array, YdS, ZdS, 'y')
ax.plot(XdS,ymax_array,ZdS,'b')
ax.set_xlabel('XKSM (Saturn Radii)')
ax.set_ylabel('YKSM (Saturn Radii)')
ax.set_zlabel('ZKSM (Saturn Radii)')
plt.show()

enter image description here

相关问题 更多 >

    热门问题