# Labels on the contour have too many digits

132 views (last 30 days)
Maryam on 29 Jul 2013
Answered: mauricio misraji on 15 Mar 2023
How can I set the precision of the numbers on my contour plot? Now the clabels are like: 1.29567, I would like to have it rounded like: 1.3.
Thanks

Maryam on 30 Jul 2013
I have done the following and it works perfectly:
[c,h]=contourf(X,Y,H); texth=clabel(c,h,'manual','fontsize', 20); for i=1:size(texth) textstr=get(texth(i),'String'); textnum=STR2DOUBLE(textstr); textstrnew=sprintf('%0.3f', textnum) set(texth(i),'String',textstrnew); end
Johannes S. on 22 Feb 2022
Thank you so much!! I was searching for something like this for about two days now.
Its a german thing, that you need to use a comma for decimal sep. instead of a dot and this is the best solution for the contour levels.

Matthew Perkins on 10 Sep 2018
I found this works. And seems much easier. I have R2015b.
[c,h]=contourf(X,Y,H);
h.LevelList=round(h.LevelList,3) %rounds levels to 3rd decimal place
clabel(c,h)
Zhao Shuaijie on 17 Feb 2021
works well !
thanks

Moises Jezzini on 12 Sep 2016
Edited: Moises Jezzini on 12 Sep 2016
An update since this was the first answer in my search. This works for 2014b or above, previous solution does not work, due to a change in the way clabel works.
[X,Y,Z] = peaks;
figure;
[C, ~] = contour(X, Y, Z, 5, 'ShowText', 'on');
tl = clabel(C, 'FontSize', 10);
itvec = 2:2:length(tl);
NewCoutours = zeros(size(itvec));
for i= itvec
textstr = get(tl(i), 'String');
NewCoutours(i) = round(str2double(textstr), 2);
end
contour(X,Y,Z, NewCoutours, 'ShowText','on');
Before
After

Hugo on 30 Jul 2013
You could use
[C,h]=contour(...);
texth=clabel(C,h);
texth is a vector that contains the handles of all labels. To get the value in label number n you can use
textstr=get(texth(n),'String');
textstr is a string of chars, not a number, so you should do
textnum=str2num(textstr);
to convert to a number. Then you can set the precision by using
textstrnew=num2str(textstr,'%1.1g');
and then set the label to
set(texth(n),'String',teststrnew);
Hope this helps.
##### 2 CommentsShow 1 older commentHide 1 older comment
Hugo on 2 Aug 2013
It doesn't work because you wrote "textstrnew=num2str(textstr,1);" instead of what I wrote. The second input argument should be an appropriate one.

mauricio misraji on 15 Mar 2023
You can add the option to the contour command:
"LabelFormat","%0.1f"
where 0.1 means just 1 decimal digit. For example:
contour(X,Y,Z,levels,'ShowText','on',"LabelFormat","%0.4f")
shows 4 decimal digits.

### Categories

Find more on Contour Plots in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by