如何使用Matplotlib在3D图中绘制穿过原点的坐标轴。

3
我想创建一个类似下面这样的3D图,使得坐标轴通过原点并在其上有刻度。请注意:我可以使用matplotlib为2D图绘制此图(如下图所示)。我搜索了很多来找到如何为3D图做到同样的效果,但是我没有找到任何信息。
1个回答

3
如果您只想限制使用matplotlib,那么我们可以使用下面展示的quiver3d图。但是结果可能不太美观。您可以在此处查看如何添加3D文本注释:链接
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.set_xlim(0,2)
ax.set_ylim(0,2)
ax.set_zlim(0,2)
ax.view_init(elev=20., azim=32)

# Make a 3D quiver plot
x, y, z = np.zeros((3,3))
u, v, w = np.array([[1,1,0],[1,0,1],[0,1,1]])

ax.quiver(x,y,z,u,v,w,arrow_length_ratio=0.1)
plt.show()

3d quiver plot


谢谢,阿米特。但问题在于这里的x、y、z轴不会通过原点,除非轴的下限(xlim、ylim、zlim)为零。 - David R
如果我使用quiver将轴绘制为箭头,那么如何在它们上面放置刻度线? - David R
没有自动完成的方法。我猜你得在循环中添加刻度和标签作为文本注释。但这不是最简单的解决方案。 - user6764549
另一个想法是使用2D绘图命令进行绘制,但是使图形“看起来”像是3D的。但是这也不是一个自动化的解决方案。我们需要计算角度和长度。 - user6764549

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接