Borrar filtros
Borrar filtros

Creating a shaded region on the polarplot

30 visualizaciones (últimos 30 días)
Cesim Dumlu
Cesim Dumlu el 23 de Mayo de 2022
Respondida: Poorna el 12 de Sept. de 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.

Respuestas (1)

Poorna
Poorna el 12 de Sept. de 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!

Categorías

Más información sobre Polar Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by