필터 지우기
필터 지우기

how to label plot axes with index from a cell array of strings

조회 수: 9 (최근 30일)
Robert Alvarez
Robert Alvarez 2015년 3월 12일
댓글: Brendan Hamm 2015년 3월 13일
I currently do this with the following function but I am looking for a way to refer to the labels with an index instead of using the switch statement. For example plotlabel(1) for xlabel, plotlabel(2) for ylabel, etc. Is there a property of the axis handle that allows me to do this or some other 'elegant' approach instead of the switch?
function LabelAxes(hax,root,subscripts)
axes(hax); % the labels will apply to this axis
for kaxis = 1:length(subscripts)
label = sprintf('%s_{%s}',root,subscripts{kaxis});
switch kaxis
case 1; xlabel(label);
case 2; ylabel(label);
case 3; zlabel(label);
end
end
An example of the use of the function is to label the axes as x_1, x_2, x_3 I would use the following code
subscripts = {'1','2','3'};
LabelAxes(gca,'x',subscripts)
edit: I am trying to avoid using xlabel, ylabel, zlabel. Having separate functions for each axis forces me to use the switch statement. I would like to replace that with a single statement where I refer to the label for each axis by a number index instead of with separate functions.

답변 (2개)

Brendan Hamm
Brendan Hamm 2015년 3월 12일
label = strcat(root,subscripts);
xlabel(label{1})
ylabel(label{2})
zlabel(label{3})
  댓글 수: 4
Robert Alvarez
Robert Alvarez 2015년 3월 12일
Thanks. I am afraid you are right. I have poked around in the axis handle fields and everything seems to be separated into x,y, and z.
Since I have written the function, I will use it.
I did try out your method of handling 2D plots and I'll be darned it does work. Apparently 2D plots have a z-axis anyway.
Brendan Hamm
Brendan Hamm 2015년 3월 13일
I did consider one other way you could do this, as these are properties of the axes; 'XLabel' etc. We can use a method called "dynamic field names".
str = {'X','Y','Z'}
str = strcat(str,'Label');
ax = axes();
for i =1:3
ax.(str{i}) = label{i};
end
Here I assume that you are combining this with the method above. For more info on dynamic field names check out: http://blogs.mathworks.com/pick/2008/08/20/advanced-matlab-dynamic-field-names/

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


Sara Hafeez
Sara Hafeez 2015년 3월 12일
Use label as label{1} like this will work in cell wit the label commands.
  댓글 수: 1
Robert Alvarez
Robert Alvarez 2015년 3월 12일
Thanks for the answer but see my comment on Brendan Hamm's answer and the edit to the original question.

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

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by