[英]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.