Merge 2D plot with polar plot
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Jorge Luis
il 15 Gen 2024
Commentato: Jorge Luis
il 16 Gen 2024
Hello, I would like to merge two different plots in a single one like a 2D plot with a polar plot like it is shown in the image below. I would apreciate the help.
Thank you for your help.
2 Commenti
Mathieu NOE
il 15 Gen 2024
hello
it is certainly doable , so what's your issue ?
do you have some data ? code ?
Risposta accettata
Jaime Abad Arredondo
il 16 Gen 2024
As Mathieu said in the comment, what you want to do is definetly doable. As an example:
theta=linspace(0,2*pi,200);
r=3.*cos(2.*theta).^2; %Random made up function.
figure(1)
clf
hold all
p=plot(r.*cos(theta),r.*sin(theta),'r');
%polar(theta,r,'b') %You can generate the polar plots as you wish.
N=50;
x_aux=linspace(-3,3,N);
Z=peaks(N); %Use built-in peaks function as example
surf(x_aux,x_aux,peaks(N))
shading interp
As you can see, the only caveat when mixing 2d and 3d elements in matlab is that the 2d elements are usually drawn at z==0, and therefore the surface plot is overlaid on top of the polar plots. In order to fix this, you have to modify the z-data of the polar plot:
figure(2)
clf
hold all
p=plot(r.*cos(theta),r.*sin(theta),'r');
%polar(theta,r,'b') %You can generate the poar plots as you wish.
N=50;
x_aux=linspace(-3,3,N);
Z=peaks(N);
surf(x_aux,x_aux,peaks(N))
shading interp
%Setting the z-component of the polar plot to be the
% maximum value of the surface plot, so that it appears on top
p.ZData=ones(size(p.XData)).*max(Z(:));
0 Commenti
Più risposte (1)
Jorge Luis
il 16 Gen 2024
2 Commenti
Jaime Abad Arredondo
il 16 Gen 2024
Then it is just a matter of using a hold command to have the two plots together. Importing the data, going from polar to cartesian coordinates and plotting everything together you should get the desired plot...
data_cart=readmatrix('plot1.txt');
data_pol=readmatrix('plot2.txt');
plot(data_cart(:,1),data_cart(:,2),'b')
hold all
plot(data_pol(:,2).*cosd(data_pol(:,1)),data_pol(:,2).*sind(data_pol(:,1)),'r')
Vedere anche
Categorie
Scopri di più su Polar Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!