在 matplotlib 旁边添加 3D 有用的轴

Add 3D-helpful axes on the side matplotlib

我一直在根据实验数据绘制 3D 散点图。它代表类椭球体的轮廓。椭圆体的大小和形状随样品而变化。

这就是为什么我想将散点图保存为数据的二维投影,沿 (xOy)、(xOz) 和 (yOz) 平面(可能还有其他平面)。 为了清楚起见,我想知道如何在图的一侧绘制我投影的轴(就像分子可视化软件可以做的那样)。 我通过使用 Inkscape 粗略地添加轴做了一个例子,但如果可能的话,我想要一个使用 matplotlib 的解决方案。

请参阅以下示例图片。

您可以在图中添加另一个轴,位于左下角,例如

xax = fig.add_axes([0.1, 0.1,0.2, 0.2])

并绘制一些带有箭头的注释。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca(projection='3d')

xax = fig.add_axes([0.1, 0.1,0.2, 0.2])

xax.annotate('', xy=(1, 0), xytext=(0, 0),
            arrowprops=dict(facecolor='black', shrink=0.02), clip_on=False)
xax.annotate('x', xy=(1.1, 0), clip_on=False, va="center")
xax.annotate('', xy=(0, 1), xytext=(0, 0),
            arrowprops=dict(facecolor='black', shrink=0.02), clip_on=False)
xax.annotate('y', xy=(0, 1.1), clip_on=False, ha="center")
xax.set_xlim(-.2,1.5)
xax.set_ylim(-.2,1.5)
xax.set_aspect("equal")
xax.axis("off")

plt.show()

这当然与 3D 轴不同步,因此您可以为每个要保存的视图生成一个这样的轴。