Azzera filtri
Azzera filtri

Labels on the contour have too many digits

46 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Maryam il 30 Lug 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
  1 Commento
Johannes S.
Johannes S. il 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.

Accedi per commentare.

Più risposte (4)

Matthew Perkins
Matthew Perkins il 10 Set 2018
I found this works. And seems much easier. I have R2015b.
h.LevelList=round(h.LevelList,3) %rounds levels to 3rd decimal place

Moises Jezzini
Moises Jezzini il 12 Set 2016
Modificato: Moises Jezzini il 12 Set 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;
[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);
contour(X,Y,Z, NewCoutours, 'ShowText','on');

Hugo il 30 Lug 2013
You could use
texth is a vector that contains the handles of all labels. To get the value in label number n you can use
textstr is a string of chars, not a number, so you should do
to convert to a number. Then you can set the precision by using
and then set the label to
Hope this helps.
  2 Commenti
Maryam il 30 Lug 2013
Thank you very much for your help. It does not work. This is what I have:
[c,h]=contourf(Xe,Ye,Z,30); texth=clabel(c,h,'fontsize', 20); for i=1:size(texth) textstr=get(texth(i),'String'); textnum=str2num(textstr); textstrnew=num2str(textstr,1); set(texth(i),'String',textstrnew); end
I appreciate your help. Thanks.
Hugo il 2 Ago 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.

Accedi per commentare.

mauricio misraji
mauricio misraji il 15 Mar 2023
You can add the option to the contour command:
where 0.1 means just 1 decimal digit. For example:
shows 4 decimal digits.


Scopri di più su Contour Plots in Help Center e File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by