1

z 値が対数 ZScale で 0 の場合、プロットが正しくレンダリングされません。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) が、-1 バーを描画するのではなく、0 バーを削除したいと考えています。

また、MATLAB で bar3 プロットのゼロ値を非表示にする方法を NaN すべて 0 値に設定しようとしましたが、ZScale をログに設定するのは好きではありません。

なにか提案を?

前もって感謝します

編集: 私が見る最も簡単な解決策は、対数スケールを手動で適用することです:

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

1 に答える 1