Когда значения z равны 0 с логом ZScale, график отображается некорректно. Это когерентно, потому что log10 (0) = -inf.Скрыть/удалить бары с нулевыми значениями из журнала bar3 ZScale
Пример:
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 значений How to hide zero values in bar3 plot in MATLAB, но установить ZScale для журнала не нравится.
Любое предложение?
Заранее спасибо
EDIT: Самое простое решение, что я вижу, это применить логарифмическую шкалу вручную:
Y = cool(7);
Y = log10(Y);
Y(Y==-inf)=NaN;
bar3(Y)
Возможно ли создать новый вектор, в котором нулевые значения были удалены, например, в этом сообщении для чтения новостей? http://www.mathworks.com/matlabcentral/newsreader/view_thread/305649 – darthbith
Это возможно с векторами, но в моем случае значения ZData являются матрицей, я не могу изменить матрицу значений ZData, удаляя нулевые значения в новой матрице. – d1eg0