如何缩放3D轴。

28

我似乎找不到有关使用matplotlib在3D图像中缩放轴的文档。

例如,我有以下图像:

3dplot 而且轴的刻度不同。我想让它们统一起来。

2个回答

57
通常最简单的方法是在你的代码中包含一些生成图像的代码,这样我们就可以看到你尝试过什么以及代码的整体设置。话虽如此,下面的代码应该可以实现:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt

fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlim3d(0, 1000)
ax.set_ylim3d(0, 1000)
ax.set_zlim3d(0, 1000)

python 3.11.2matplotlib 3.7.1 中测试通过

fig = plt.figure(figsize=(10, 5))
ax = fig.add_subplot(111, projection='3d')

ax.set_xlim3d(0, 1000)
ax.set_ylim3d(0, 1000)
ax.set_zlim3d(0, 1000)

enter image description here


8
这不会使坐标轴刻度尺度相同。然而,ax.axis('equal') 对我很有用。 - Dmitri K
5
Matplotlib 3.3.3 报错:"NotImplementedError: Axes3D 目前仅支持 'auto' 参数。您传递了 'equal' 参数。" - Mr. T

6
以下代码将当前坐标轴的极限值设置为盒子纵横比以实现"相等"行为:[来源]:
ax.set_box_aspect([ub - lb for lb, ub in (getattr(ax, f'get_{a}lim')() for a in 'xyz')])

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