set number of ticks at any given time

조회 수: 62 (최근 30일)
Andre
Andre 2023년 6월 20일
댓글: Andre 2023년 6월 21일
hi,
i am searching for something to set the amunt of ticks to a fix value of a plot.
the reason is, right now im plotting live data and the plot constantly changes the number of ticks and therefore the space inbetween, wich makes it harder to read than necessary.
now i know that i can change XTick to values of my liking, but when i do, i also have to change them all the time in the loop, so my tought was to simply change the amount of xticks. however, i couldnt find a solution. i am using animatedline, does that make a difference?
sincerely
Andre

채택된 답변

Steven Lord
Steven Lord 2023년 6월 20일
If you know the bounds over which your data to be plotted spans, I would set those limits first using axis or xlim and ylim (and set the ticks and tick labels with xticks, xticklabels, etc.) then addpoints to your animatedline. Doing so means that the axes will not need to recalculate its limits to include the new points and so the ticks won't need to change during the plotting.
Run the following two sections of code and watch the plotting. The first doesn't need to change the limits at all once the axes is created by the axis call. The second updates the limits with each new point. [The effect in MATLAB Answers is the same, since it only shows the final results, but in an interactive MATLAB session you will be able to see the difference.]
With axes limits set initially:
x = 0:10;
y = x.^2;
[minX, maxX] = bounds(x);
[minY, maxY] = bounds(y);
axis([minX maxX minY maxY])
h = animatedline(NaN, NaN);
for k = 1:numel(x)
addpoints(h, x(k), y(k));
pause(1)
end
Without axes limits set initially:
figure
h = animatedline(NaN, NaN);
for k = 1:numel(x)
addpoints(h, x(k), y(k));
pause(1)
end
  댓글 수: 4
Andre
Andre 2023년 6월 21일
it has a "pseudo" maximum. its in a for loop and each loop, data is being collected. and i have the same problem as in the last example, its just not at the beginning and instead at the end.
when i want to collect like 1000 data points, i start with like a range from 0 to 20, but i would end with a range of 980 to 1000. so that i always have 21 values displayed. maybe it would be fine with matlab always recalculating where the ticks are located, but at least the number would variate that drastically. i also limit the values in animatedline, so i dont have a plot with thousands and thousands of values. maybe that was the wrong aproach. i thought that it may slows down, when i collect a 100k data points each for three sensors, having 300k data-sets in the plots.
anyways, bottom line is, what i want is not possible, unless i also set the ticks each loop again. then i will look how fast that is. thanks for going through that whole topic :)
Andre
Andre 2023년 6월 21일
im a little lost right, i made a new script where i can test it out, so i dont have to screw around in the script i am using at the end. after i did it, i let it run and i do not have the same effect, it is working there as i want it to work.
so im not sure whats causing it.

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

추가 답변 (1개)

Richard Burnside
Richard Burnside 2023년 6월 20일
The "xticks" and "yticks" command will let you manually set your tick values.
  댓글 수: 1
Andre
Andre 2023년 6월 20일
편집: Andre 2023년 6월 20일
but thats exactly what i dont want to do. my goal is to have it always have 10 ticks, and not some auto-stuff interfere and change it with each loop iteration, but i cant find such a thing.
and thanks :)

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

카테고리

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

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by