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

142 ビュー (過去 30 日間)
carlotta barbierato
carlotta barbierato 2020 年 2 月 19 日
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 件のコメント
Adam Danz
Adam Danz 2020 年 2 月 19 日
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
carlotta barbierato 2020 年 2 月 19 日
Yes exactly

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2020 年 2 月 19 日
編集済み: Adam Danz 2020 年 2 月 19 日
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')

その他の回答 (2 件)

Mil Shastri
Mil Shastri 2020 年 2 月 19 日
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
Sky Sartorius 2020 年 2 月 19 日
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')

カテゴリ

Help Center および File ExchangeScatter Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by