# How can I create a 3D plot of data with dots of different color?

2 views (last 30 days)
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

Show 1 older comment
carlotta barbierato on 19 Feb 2020
No, I have 4 values/positions on each axes: [1 2 3 4], and I only know that my pair of (mean,sd) corrispond to a specific position, so for example: the pair (1.376,0.0385) corrispond to the position (1,1,1) on the x,y,z axes; or the pair (1.398,0.0326) corrispond to the position (1,1,2) on the x,y,z axes and so on.
Adam Danz on 19 Feb 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.
1. So, you have two nx1 (or 1xn) vectors: one for the means, one of the stds.
2. And you have a nx3 (or 3xn) matrix of [x,y,z] coordinates.
3. 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).
carlotta barbierato on 19 Feb 2020
Yes exactly

Adam Danz on 19 Feb 2020
Edited: Adam Danz on 19 Feb 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
cb = colorbar();
title(cb, 'Means') #### 1 Comment

carlotta barbierato on 19 Feb 2020
Thank you! cordially,
Carlotta

Mil Shastri on 19 Feb 2020
At 19:04, Adam defines the color of the points. He also shows how you can have MATLAB automatically generate code for the customizations.

#### 1 Comment

carlotta barbierato on 19 Feb 2020

Sky Sartorius on 19 Feb 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')

#### 1 Comment

carlotta barbierato on 19 Feb 2020
Thank you, I'll try your code!