Matplotlib 3D散射 - 等长宽比

时间:2013-04-23 16:39:11

标签: python matplotlib scatter mplot3d

我正在尝试使用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())但到目前为止还没有真正有效。

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分: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,但我想这并不意味着机制不存在。

相关问题