2013-04-23 167 views
0

我正在嘗試使用matplotlib製作3D散點圖。我遇到的問題是,所有軸對之間的縱橫比不是1:1。誰會知道如何解決這個問題?Matplotlib 3D散點圖 - 等寬比例

我的代碼看起來是這樣的:

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() 

我已經嘗試添加kwargs像 「縱橫= 1」 到腳本的各個部分(即 - 散射(),圖(),AX() )但到目前爲止還沒有真正起作用。

任何幫助,將不勝感激!

謝謝!

+0

也許這是幫助http://stackoverflow.com/questions/7965743/python-matplotlib-setting-aspect-ratio – Johnny 2013-04-23 16:43:08

+0

我還沒有嘗試過整個subplot例程。這是一個好主意,雖然我不知道它是否可以與3D散點圖一起使用。 – astromax 2013-04-23 16:58:03

+0

好的,我已經在鏈接的頁面上嘗試了一些東西,它們都是關於改變窗口本身的縱橫比,而不是實際的座標軸。有沒有辦法調整3D散點圖的軸範圍?我正在爲所有三個軸繪製-x到x。 – astromax 2013-04-23 17:06:20

回答

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,但我想這並不意味着該機制不會以某種方式出現。