0

我正在尝试使用 matplotlib 制作 3D 散点图。我遇到的问题是该图没有在所有轴对之间使用 1:1 的纵横比。有人知道如何解决这个问题吗?

我的代码看起来像这样:

from matplotlib.pyplot import *
from mpl_toolkits.mplot3d import *

figure(1, figsize=(7,7))
ax = gca(projection='3d')
ax.scatter(FH[:,0],FH[:,1],FH[:,2],s=0.5)
show()

我已经尝试将“aspect=1”之类的 kwargs 添加到脚本的各个部分(即 - scatter()、figure()、ax()),但到目前为止没有任何效果。

任何帮助,将不胜感激!

谢谢!

4

1 回答 1

1

好的 - 我已经解决了我的问题。我在这里找到它:set matplotlib 3d plot aspect ratio? (在我忽略的帖子中)。

我的问题实际上是如何设置我的情节的边界框(或范围),而不是如何设置纵横比。诀窍是,如果您知道要用于绘制数据的边界框的范围,请像这样绘制不可见点:

fig=figure(1, figsize=(7,7))
ax = fig.gca(projection='3d')
ax.scatter(FH[:,0],FH[:,1],FH[:,2],s=0.5)

# plotting white points
MAX = 3 # I wanted -3 to 3 in each direction
for direction in (-1, 1):
    for point in diag(direction * MAX * array([1,1,1])):
        ax.plot([point[0]], [point[1]], [point[2]], 'w')

show()

希望这可以帮助。对我来说有点奇怪,我无法为我的 3D 散点图找到类似函数/kwarg 的范围,但我想这并不意味着该机制不存在。

于 2013-04-23T17:32:37.393 回答