I have a polar plot. Is there a way to label the axes?
245 views (last 30 days)
Steven Lord on 9 Jan 2017
In release R2016a or later if you create a polaraxes, either using that function directly or by creating a polarplot, you can get the RAxis property of that polaraxes. The RAxis object has a property named Label that contains a text object, and that text object has a property named String.
ax = polaraxes;
rule = ax.RAxis;
rlabel = rule.Label;
rlabel.String = 'hello world';
You can chain together the property references if you want to make this a two line code:
ax = polaraxes;
ax.RAxis.Label.String = 'dlrow olleh';
Walter Roberson on 9 Jan 2017
polar() is pretty much plot() of pol2cart() behind the scenes. There is no support for r or theta labels. There is the xlabel and ylabel from the underlying axes, but that is not very useful.
So, what you have to do is pick out an axes position in r and theta terms, pol2cart those into x y components, and text() at that position.
Star Strider on 9 Jan 2017
If you have R2016a or later, use the polarplot function. It gives you the option of specifying the 'RTickLabel' (link) values. That is likely as close as you can get to what you want to do.
You will need to use sprintf and strsplit to create the labels and a cell array to use as the radius labels.
eV = linspace(0, 10, 5);
eVstr = sprintf('%.1f eV\n', eV);
eVlbl = strsplit(eVstr, '\n');
eVlbl = eVlbl(1:end-1);
The last element of the original ‘eVlbl’ is an empty string that can cause problems with vector length matching, so it is necessary to eliminate it by the second ‘eVlbl’ assignment.
Experiment with it. If you have problems, describe them here. We can help.