How do I rotate a 3D scatterplot automatically around the x-axis?

55 vues (au cours des 30 derniers jours)
Pooja Khanna
Pooja Khanna le 15 Jan 2021
I have generated a 3D scatterplot for my variables. I'd like to be able to rotate it around the x-axis, preferably in a continuous loop. Any help would be appreciated.

Réponses (1)

Deepak Meena
Deepak Meena le 27 Jan 2021
Hi Pooja,
From my understnading you want to rotate a 3d scatter plot programatically. For surface, line plot MATLAB have rotate which can rotate a figure about a particular direction and given degrees. But that doesn't work for the 3dScatter plot . But there is work around that :
1)Draw a 3d line plot of the corresponding scatter plot
2)Rotate that 3d line plot using the rotate function.
3)get the data from the line plot and draw the corresponding 3dScatterplot .
For ex#
figure
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.0*Y(:); 0.0*Y(:); Y(:)];
z = [0.0*Z(:); 0.0*Z(:); Z(:)];
scatter3(x,y,z);
This will plot this scatter plot :
Step 1:
when we draw the line plot of this scatter plot :
figure(2)
p = plot3(x,y,z);
Step 2:
Now we rotate this around z-axis by 25 degrees as:
direction = [0 0 1];
rotate(p,direction,25);
so we have :
Step 3:
Now we get the data from the rotated line plot and plot a scatter plot as follow:
x =p.XData;
y = p.YData;
z = p.ZData;
figure(2);
scatter3(x,y,z)
so we have :
To do this in continuous loop :
figure
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.0*Y(:); 0.0*Y(:); Y(:)];
z = [0.0*Z(:); 0.0*Z(:); Z(:)];
scatter3(x,y,z);
p = plot3(x,y,z);
for i=1:10
direction = [0 0 1];
rotate(p,direction,25);
x =p.XData;
y = p.YData;
z = p.ZData;
figure(2);
scatter3(x,y,z);
pause(2);
end
Hope this helps
Thanks

Catégories

En savoir plus sur Scatter Plots dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by