Format colorbar using engineering notation
27 views (last 30 days)
How can I set the scale of a color bar to use exponential notation, with all exponents being a multiple of 3?
I know that format shortEng will set the format I want for values printed to the Command Window, but I cannot find anything to format string printed elsewhere using this format.
Star Strider on 19 Nov 2019
engstr = @(x) [x(:).*10.^(-3*floor(log10(abs(x(:)))/3)) 3*floor(log10(abs(x(:)))/3)];
Q1 = logspace(-3, 3, 7);
Result2 = sprintfc('%.4fe%+04d', engstr(Q1))
Alternatively, use compose instead of sprintfc to create the tick labels for the color bar.
Experiment with the format string to get the result you want. This is just an example.
More Answers (1)
Harry Dymond on 3 Jul 2020
A little late for the OP perhaps, but:
- My num2eng FEX submission will process colorbars to update the tick labels, and keep them updated if the data in the associated axes change. Just pass the handle of the colorbar to num2eng.
- It sounds like, from your comment to Star Strider, that this isn't actually what you want. You want to have a "global" exponent for the colorbar, and for this to be a multiple of three. For this, you need to use the colorbar's hidden .Ruler.Exponent property. e.g.:
barH = colorbar; barH.Ruler.Exponent = 9;