2017-05-20 69 views
0

我有一組PDF,我需要繪製PDF域的某個部分。然而,當我上繪製三維圖,我得到的尾巴每個PDF我的臺詞,修剪matplotlib中3d圖外的數據

enter image description here

有沒有乾淨的方式不積這一目標超出了我的情節限制的尾巴?我知道我可以將數據更改爲NaN以達到相同的效果,但我想在matplotlib中執行此操作。這是我目前的解決方法的代碼,

`# trim the data 
y = np.ones(PDF_x.shape)*PDF_x 
y[y>95]= np.nan 
y[y<75]= np.nan 


# plot the data 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
for i in range(PDF_capacity.shape[1]): 
    ax.plot(life[i]*np.ones((PDF_x.shape)),y,PDF_capacity[:,i], label='parametric curve') 

# set the axis limits 
ax.set_ylim(75,95) 

# add axis labels 
ax.set_xlabel('charge cycles to failure point of 75% capacity') 
ax.set_ylabel('capacity at 100 charge cycles') 
ax.set_zlabel('probability')` 

修剪我可以做如下的情節後,

enter image description here

+0

是否有任何繪圖屬性會限制繪製的數據?像xlim或ylim? – wwii

+2

我沒有看到任何理由不使用'nan's掩碼('y [y> 95] = np.nan')。 「我想」並不是說服某人投入大量精力投入已經具有無缺陷的單線解決方案的一個非常好的理由。 – ImportanceOfBeingErnest

+0

我正在使用'ax.set_ylim(75,95)'來將繪圖限制到指定的限制,但是,這不會將數據修剪到這些限制之間。 –

回答

1

nan的數據在你這樣做的方式是一個很好的,實用的解。

由於matplotlib三維圖是投影到二維空間,所以很難實現自動裁剪。雖然我認爲這是可能的,但我不相信這是值得的。首先,因爲您需要以不同方式處理不同類型的地塊,其次,因爲至少在某些情況下,可能會發現屏蔽數據仍然是最佳選擇。現在,對繪圖對象進行復雜的子類化只是爲了完成可以在一行或兩行中手動完成的相同事情,可能是矯枉過正。

因此,我明確的建議是使用您已有的解決方案。特別是因爲目前似乎沒有任何缺點。