Changing scientific notation on plot

조회 수: 8 (최근 30일)
Colby
Colby 2015년 4월 22일
댓글: Mike Garrity 2016년 2월 19일
Hello, I'm having issues changing the default scientific notation used on some plots I'm making. I've tried the following lines of code. yt=get(ax(2), 'ytick');
set(ax(2), 'YTickLabel',sprintf('%.0d',yt));
When I use these lines, it plots every tick value for that axis, at every tick on that axis. Does anyone know what I'm doing wrong? I can't seem to figure it out. Attached is an image of the plot after the above two lines of code are executed.
<<
>>
Thanks for your time

채택된 답변

Guillaume
Guillaume 2015년 4월 22일
편집: Guillaume 2015년 4월 22일
set(ax(2), 'YTickLabel', arrayfun(@(v) sprintf('%.0d', v), yt, 'UniformOutput', false));
should work. Your sprintf call returns a single string that is the concatenation of all your tick values, whereas YTickLabel expects a cell array of strings.
  댓글 수: 2
Colby
Colby 2015년 4월 22일
편집: Guillaume 2015년 4월 22일
Excellent! This works very well for my situation!
Thank you for your time and expertise.
Just incase someone in the future tries to replicate these results, note that the above code is missing quotation and a parenthesis. The same code with the typos corrected is below.
set(ax(2), 'YTickLabel', arrayfun(@(v) sprintf('%.0d', v), yt, 'UniformOutput', false));
Thanks again
Guillaume
Guillaume 2015년 4월 22일
Yes, sorry about the typos. Fixed now.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Stephen23
Stephen23 2015년 4월 22일
편집: Stephen23 2015년 4월 22일
You need to provide a cell array of strings.
The output of sprintf is a simple string, so MATLAB repeats this string for each tick mark. If you want to define each string uniquely, then supply them in a cell array. The axes properties documentation states this clearly: "Tick mark labels, specified as a cell array of strings. If you do not specify enough strings for all the ticks marks, then the axes cycles through the specified strings"
If yt is a numeric vector (which it should be!), then this will convert those values to a cell array of strings:
arrayfun(@(n)sprintf('%.0d',n), yt, 'UniformOutput',false)

hongyu zhai
hongyu zhai 2016년 2월 19일
편집: Stephen23 2016년 2월 19일
There is a simple way to change the Axis scientific notation by change the basic property of the XAxis or YAxis.
These two example will help you.
  댓글 수: 1
Mike Garrity
Mike Garrity 2016년 2월 19일
We should note that this is a feature that was introduced in R2015b. It is a lot nicer than messing around with the TickLabels by hand as seen above, but you won't be able to use it with earlier versions of MATLAB.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Grid Lines, Tick Values, and Labels에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by