How can I create a 3D plot of data with dots of different color?
133 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
carlotta barbierato
el 19 de Feb. de 2020
Comentada: carlotta barbierato
el 19 de Feb. de 2020
Hello everyone,
I have to create a 3D visualization of some data that I have. I have 2 vectors that represent mean and standard deviation of my data. I have to plot them in a 3d graph in which each point of the graph contains a pair of (mean,sd) value, and for each pair I have to draw a cloured point. The colour depends on the values of the mean (ex: red=high value, blu=low value).
Thank you, cordially
Carlotta
4 comentarios
Adam Danz
el 19 de Feb. de 2020
The question is still unclear. This is how I understand it so far. Please either confirm or correct the following steps or replace them completely with more descriptive ones.
- So, you have two nx1 (or 1xn) vectors: one for the means, one of the stds.
- And you have a nx3 (or 3xn) matrix of [x,y,z] coordinates.
- You want to create a scatter plot of the [x,y,z] coordinates in a 3D plot and color-code each point based on the mean value (the std values aren't used).
Respuesta aceptada
Adam Danz
el 19 de Feb. de 2020
Editada: Adam Danz
el 19 de Feb. de 2020
Use scatter3() to create the 3D scatter plot and scale the colors based on a vector of mean values.
% Create 100x3 matrix of [x,y,z] coordinates
xyz = randi(1000,100,3);
% Create 100x1 vector of means
mu = rand(100,1).*5;
% Create 3D scatter plot, colorcode the values based on mu values
scatter3(xyz(:,1),xyz(:,2),xyz(:,3), 40, mu, 'filled')
xlabel('x')
ylabel('y')
zlabel('z')
% equate aspect ratio (if needed)
axis equal
% Add colorbar if desired
cb = colorbar();
title(cb, 'Means')
Más respuestas (2)
Mil Shastri
el 19 de Feb. de 2020
Check out this video starting from 18:04 https://www.mathworks.com/videos/matlab-for-excel-users-81634.html
At 19:04, Adam defines the color of the points. He also shows how you can have MATLAB automatically generate code for the customizations.
Sky Sartorius
el 19 de Feb. de 2020
Use a scatter plot and CData:
n = 100;
xData = 1:n; % Placeholder - I assume you have additional information about the data to locate it in 3D space.
meanData = rand(n,1);
stdData = randn(n,1).^2;
scatter(xData,meanData,'CData',stdData);
h = colorbar;
h.Label.String = 'Standard deviation'
ylabel('Mean')
Ver también
Categorías
Más información sobre Scatter 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!