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)