簡體   English   中英

從bar3日志ZScale隱藏/刪除具有零值的條

[英]hide/delete bars with zero values from a bar3 log ZScale

當z值為0且對數為ZScale時,該圖將被錯誤地渲染。 這是一致的,因為log10(0)= -inf。

例:

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值替換為0.1(然后log10(0.1)= -1),但我想刪除0條,而不是繪制-1條。

我也嘗試將所有0值都設置為NaN 如何在MATLAB中的bar3圖中隱藏零值,但是將ZScale設置為log不喜歡它。

有什么建議嗎?

提前致謝

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

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

如果可以將對數z值替換為0.1,則可以將所有零值替換為10 ^ 0.1,因此在記錄時,它們將變為0.1。

所以,

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

這將保留對數刻度軸的刻度線和標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM