Когда значения 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 баров.
Также я попытался установить NaN для всех 0 значений Как скрыть нулевые значения в графике bar3 в MATLAB, но установка ZScale на log не нравится.
Любое предложение?
заранее спасибо
EDIT: самое простое решение, которое я вижу, это применить логарифмическую шкалу вручную:
Y = cool(7);
Y = log10(Y);
Y(Y==-inf)=NaN;
bar3(Y)