在 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 轴不同步,因此您可以为每个要保存的视图生成一个这样的轴。
我一直在根据实验数据绘制 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 轴不同步,因此您可以为每个要保存的视图生成一个这样的轴。