Creating a shaded region on the polarplot

30 views (last 30 days)
Cesim Dumlu
Cesim Dumlu on 23 May 2022
Answered: Poorna on 12 Sep 2023
Hello, I am trying to display a curve and a shaded region on the same polarplot. To create shaded region I used the polarhistogram as given below
polarhistogram([5.*pi/6 ,pi],1,BinLimits=[5.*pi/6,pi],EdgeAlpha=0,FaceAlpha=0.2,FaceColor=[0.4660 0.6740 0.1880])% creates a shaded region
Which does the job. I would like to display this on the polar graph generated by the code below
clear all;
tic
pr=6250000000000000000000000./(2669354663220513.* pi.^2);zr=pi.*800;
omega=3.*pi./4;tau=25;c=300;E0=0.0026./sqrt(10); %parameters
s12pmp = @(thetak,k,z) zr.^2.*tau./2.*c./omega.*E0.^3.*pi.^(3./2).*1./sqrt(3).*exp(-32.*z.^2.*zr.^2./(3.*c.^2.*tau.^2)+1i.*(-2+2+4).*z.*zr.*omega./(3.*c)....
+ 1./3*1i.*k.*z.*zr.*(-1+3.*cos(thetak))-c.*k.^2.*(1+z.^2).*zr.*sin(thetak).^2./(2.*omega.*(3+1i.*(-1).*z)))...
*((1+1i.*z)./(1-1i.*z)).^(1./2.*(-1)).*2./((3+1i.*(-1).*z).*sqrt(1+z.^2));
s12pmpz = @(thetak,k) integral(@(z) s12pmp(thetak,k,z),-Inf, Inf,'ArrayValued',true);
s12pmpzk = @(thetak) integral(@(k) pr.*4.*2.*pi.*k.^3.*exp(-1./24.*tau.^2.*(c.*k-omega).^2).*sin(thetak./2).^4.*sin(thetak) ...
.*abs(s12pmpz(thetak,k)).^2, pi./500, pi./300,'ArrayValued',true);
figure();
% hold on
n=200;
thetak = linspace(0,pi,n);
polarplot(thetak,s12pmpzk((thetak)))
thetalim([0 180]);
%colorbar('southoutside')
timeElapsed = toc
Any help is greatly appreciated.

Answers (1)

Poorna
Poorna on 12 Sep 2023
Hi Cesim Dumlu,
I understand that you want to shade/fill the polar plot just like the "polarhistogram" function.
You can do this by using the "fill" function. But the "fill" function only takes cartesian coordinates as input. So, you might want to use the "pol2cart" function to convert the polar coordinates to cartesian coordinates.
An example code is given below. Here, first we convert the theta and rho values to cartesian coordinates using "pol2cart" function. Later, use the "fill" function to shade the plot with required the colour
rhodata = s12pmpzk((thetak));
%convert the polar coordinates to cartesian.
[x,y] = pol2cart(thetak, rhodata);
%fill the plot with the required color
fill(x,y,[0.4660 0.6740 0.1880], 'FaceAlpha', 0.2);
And at last, to plot a polar plot and a cartesian plot in the same axes, you might want to refer to the following answer: https://in.mathworks.com/matlabcentral/answers/400591-how-do-i-combine-the-polar-plot-and-cartesian-coordinate-together#answer_320079
Kindly refer to the following links to know more about the functions used above:
Hope this Helps!

Categories

Find more on Polar Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!