2015-05-07 3 views
3

Я хочу сократить число десятичных знаков на следующем графике контура. Я:Matlab: Отформатируйте десятичные знаки на контурных ярлыках

[cc,hh] = contour(X,Y,Z,levels,'LineColor','k');hold on 
texth = clabel(cc,hh,'FontSize',8); 

, который получает меня первый контур с длинными ярлыками. Затем, чтобы вырезать десятичные знаки, я делаю:

for i = 1:size(texth); textstr=get(texth(i),'String'); textnum=str2double(textstr); textstrnew=sprintf('%0.0f', textnum) ; set(texth(i),'String',textstrnew); end 

И это дает второй участок. Как вы видите, между ярлыком и контурными линиями существует большой разрыв, который выглядит ужасно. Есть идеи, как это решить?

enter image description here

Спасибо!

+0

Вам нужны контуры, чтобы иметь определенные значения? потому что вы могли бы просто создать контуры в целых значениях! –

+0

Я попытался округлить десятичные знаки в векторе cc, но это не сработало! Я имею в виду, что Z-матрица не имеет целых чисел .... –

+1

Попробуйте заменить 'levels' на' round (levels) 'при создании графика. – David

ответ

1

Вместо того, чтобы изменять результат, создайте контурный график с требуемыми уровнями, поэтому вам не нужно обманывать данные.

Определить уровни, например. levels=997:1010

, а затем

contour(X,Y,Z,levels,'LineColor','k','ShowText','on'); 

Создаст контур участка с текстом включены и уровни будучи конкретно те, в переменной levels, в этом случае 997,998,999, ..., 1009,1010

Если, как предлагает @David, ваша переменная уровня уже является вектором, а затем замените ее на round(levels), как он сам предложил.

+0

приятный и чистый, это сделал трюк, ура! –