MATLAB: Log scale for radius axis in a polar plot

polarpolar scatterr-axis

Hi everyone,
I am looking for a 'trick' to make a polar plot (polarscatter in this case) which presents my data on a log scale through the r-axis.
Has anyone been able to do that. It seems like it is not possible with 'traditional' ways like setting the RLim. The point is that I have many data that are in between 10e-6 and 10e-2. All I get is a plot with a bunch of data overlapping around 0 and some scattered data around 10e-2. I would like to have a plot where on the r-axis I have a range that goes from 10e-6 to 10e-2, as only in this way I can clearly visuallize the data close to 10e-6.
I know that since it is a polar plot, the r range starts from 0 and the log of it is infinite but surprisingly, I see very similar plots done with matlibplot in python or other softwares (licensed ones) but I would like to make use of Matlab if that is possible.
test_polar.jpg
Any help is appreciated

Best Answer

Try this:
th = linspace(0, 2*pi, 9); % Create Angles
r = rand(1, numel(th)) .* 10.^(1:numel(th))-9; % Create Data
figure
polarplot(th, log10(r), 'p')
Ax = gca;
Ax.RTick = (2:2:numel(th)-1);
Ax.RTickLabel = compose('10^{%2d}',(2:2:numel(th)-1)-10);
% Ax.RTickLabel = sprintfc('10^{%2d}',(2:2:numel(th)-1)-10); % Use ‘sprintfc’ If You Do Not Have ‘compose’
Experiment to get the result you want.