how to label plot axes with index from a cell array of strings
23 ビュー (過去 30 日間)
古いコメントを表示
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.
0 件のコメント
回答 (2 件)
Brendan Hamm
2015 年 3 月 12 日
label = strcat(root,subscripts);
xlabel(label{1})
ylabel(label{2})
zlabel(label{3})
4 件のコメント
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
2015 年 3 月 12 日
Use label as label{1} like this will work in cell wit the label commands.
参考
カテゴリ
Help Center および File Exchange で Axis Labels についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!