我正在尝试使用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())但到目前为止还没有真正有效。
任何帮助将不胜感激!
谢谢!
答案 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,但我想这并不意味着机制不存在。