axis equal - a bug in the function?

Hi,
when executing following
plot(1:10)
axis equal
I'm getting a figure as below, which seems not to comply with the definition of the equal: "Use the same length for the data units along each axis"

답변 (2개)

Peter Nave
Peter Nave 2020년 12월 26일

0 개 추천

The units ARE the same, take a ruler and measure them on the monitor!
Bruno Luong
Bruno Luong 2020년 12월 26일
편집: Bruno Luong 2020년 12월 26일

0 개 추천

It is. The unit length is the same, not the total length of the axis.
If you want to enforce the limits use xlim/ylim commands after axis equal.

댓글 수: 6

So it is not clear to me what is the difference comparing to
plot(1:10)
Bruno Luong
Bruno Luong 2020년 12월 26일
편집: Bruno Luong 2020년 12월 26일
Matlab adjusts the plot limits covers your data. The command "axis equal" does not touch the axis limits so that they are equal.
All it warranty is the aspect ratio: 1 unit of xaxis == 1 unit of yaxis when rendering on the screen. (unit length)
Stephen23
Stephen23 2020년 12월 26일
편집: Stephen23 2020년 12월 26일
"So it is not clear to me what is the difference comparing to "
Not much because your X and Y data ranges are the same. If you plotted some data with different X and Y ranges the equal unit length set by axis equal would be much clearer (note that MATLAB automatically fits the entire data range to within the axes whilst keeping the unit lengths the same):
X = 0:10;
Y = 2*X;
plot(X,Y,'-*')
axis equal
michael
michael 2020년 12월 26일
Rest my case - you have same issue. The scale is 20, but on your x axis, you have more than 20 points.
Bruno Luong
Bruno Luong 2020년 12월 26일
편집: Bruno Luong 2020년 12월 26일
"you have same issue"
No he has not. You simply fail to understand what "axis equal" does despite of three people telling you what it suppose to do.
You are stuck in your onw logic which is NOT "axis equal" supposes to do.
Stephen23
Stephen23 2020년 12월 26일
편집: Stephen23 2020년 12월 26일
"Rest my case - you have same issue. The scale is 20, but on your x axis, you have more than 20 points."
The axis documentation does not state anything about how many units (i.e. the range) will be displayed for each of the axes, it only defines that their unit lengths will be the same: "equal Use the same length for the data units along each axis." For some reason you seem to be confusing the data range with unit length.
The statement "you have more than 20 points." is in any case incorrect: there are exactly eleven data points plotted on the axes in my previous comment (I just added a marker so that everyone can count them).

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

카테고리

도움말 센터File Exchange에서 Line Plots에 대해 자세히 알아보기

제품

릴리스

R2020b

태그

질문:

2020년 12월 26일

편집:

2020년 12월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by