2013-08-05 73 views
1

當z值爲0且日誌爲ZScale時,繪圖呈現不正確。這是一致的,因爲log10(0)= -inf。從bar3日誌中零值的隱藏/刪除條ZScale

例子:

Y = cool(7); 
bar3(Y) 
set(gca,'ZScale','log') 

但我怎麼才能把這個情節吧0?

由Mathworks公司 (http://www.mathworks.nl/support/solutions/en/data/1-2VFT6X/?product=ML&solution=1-2VFT6X) 給定的溶液如下:

Y = cool(7); 
bar3(Y) 
set(gca,'ZScale','log') 

llim = .1; 
h = get(gca,'Children'); 
for i = 1:length(h) 
    ZData = get(h(i), 'ZData'); 
    ZData(ZData==0) = llim; 
    set(h(i), 'ZData', ZData); 
end 

將該溶液通過0.1替換0值(日誌10然後(0.1)= - 1),但我想刪除0巴,不畫-1條。

此外,我試圖設置爲NaN所有0值How to hide zero values in bar3 plot in MATLAB但將ZScale設置爲日誌不喜歡它。

有什麼建議嗎?

在此先感謝

編輯: ,我看到的是應用手動對數刻度的最簡單的解決方案:

Y = cool(7);  
Y = log10(Y); 
Y(Y==-inf)=NaN; 
bar3(Y) 
+0

是否有可能創建一個新的向量,零值已被刪除,就像在這篇新聞閱讀器文章中一樣? http://www.mathworks.com/matlabcentral/newsreader/view_thread/305649 – darthbith

+0

這可能與向量,但在我的情況下ZData值是一個矩陣,我不能重塑ZData值矩陣,刪除一個新的矩陣中的零值。 – d1eg0

回答

0

如果你用罰款代替0.1日誌z值,你可以用10^0.1替換所有的零值,所以在記錄時它們變成0.1。

所以,

Y = cool(7); 
Y(Y==0) = 10^0.1; 
bar3(Y) 
set(gca,'ZScale','log') 

這將保留對數刻度座標軸刻度線和標籤。