App Designer Axis Issue xlim and dataticks

조회 수: 55 (최근 30일)
Life is Wonderful
Life is Wonderful 2019년 11월 22일
댓글: Life is Wonderful 2020년 6월 10일
I want to create axis (X,Y) with dateticks.
I want to plot the data with axis(xlim and dateticks - hh:mm:ss.SSS) but I am getting an error
Edited
ans =
101×1 duration array
00:00:46.000
00:00:46.000
00:00:46.000
00:00:46.000
00:00:46.000
00:00:47.000
00:00:50.000
00:00:50.000
00:00:50.000
00:00:50.000
00:00:50.000
00:00:50.000
00:00:50.000
00:00:50.000
  댓글 수: 2
Adam Danz
Adam Danz 2019년 11월 22일
편집: Adam Danz 2020년 1월 28일
Check out your values of xstart xend. Then look at the error message and ask yourself what requirements you're not fulfilling. There are 3 requirements according to the error message.
  • "Value must be a 1x2 vector
  • of numeric type
  • in which the second element is larger than the first and may be Inf"
To address the 1st point, size([xstart xend]); is that 1x2?
To address the 2nd point, class(xstart) and class(xend); is it numeric?
To address the 3rd point, xend>xstart; is it true?
NOTE: The user "Matlab" has deleted their comments within this discussion.
Adam Danz
Adam Danz 2019년 11월 25일
편집: Adam Danz 2019년 11월 25일
  1. Sorry, xstart and xend should each be 1x1. The [xstart, xend] should be 1x2 which looks OK in your data above.
  2. If your x-data are duration, your x-limits need to be durations, too. That's directly from the documentation. "You can specify the limits as numeric, categorical, datetime, or duration values. However, the type of values that you specify must match the type of values along the x-axis."
  3. The 2nd value of your x-axis limit must be greater than your first value. That makes sense because you're setting the [lower, upper] bounds of the x-axis.
So you need to fix #2 and #3. My answer has a function demo.

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

채택된 답변

Adam Danz
Adam Danz 2019년 11월 25일
편집: Adam Danz 2019년 11월 27일
I see your data are durations along the x axis. To set the axis limits,
  1. Use xlim() where the first input is your axis handle and your 2nd input is a [1 x 2] vector of durations
  2. The 2nd value of your x limit must be larger than the first value
Here's a demo
% Create data and plot it on UIAxes
h = duration([9 17 54;12 32 3]);
app.uiax = uiaxes();
plot(app.uiax,h,[0,1], '-o')
% Create the [start,end] x-limits
xstart = duration(9,0,0);
xend = duration(13,0,0);
% Set the x limits: xend must be larger than xstart
xlim(app.uiax,[xstart, xend])
If your are plotting this : [c{range,1},range]
then you minimum and maximum durations would be
xstart = min([c{range,1},range]);
xend = max([c{range,1},range]);
  댓글 수: 6
Life is Wonderful
Life is Wonderful 2019년 12월 2일
Thanks a lot.
Issue : How to make a plot a figure from stackedplot ?
Others I will raise the new threads.
Life is Wonderful
Life is Wonderful 2020년 6월 10일
Hi Adam,
Can you please have a look in the below post.
The issue is initiail text data are over lapping . I would like to have a Tab like implementation before next data is printed.
Example : Issue can be seen with below example, One,Two and Three text are over lapping.
x = [1:3];
y = [1:3];
str1 = ['One'];
str2 = ['Two'];
str3 = ['Three'];
plot(x,y)
text(x,y,str1);
text(x,y,str2);
text(x,y,str3);
Thank you

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by