Applying Colormaps to Scatter3 Plots
Show older comments
I'm trying to plot using scatter3, along with colormaps to understand correlations in my data. Currently, this is what I've developed

At first glance, this might look ok, but if you take a closer look (especially as time increases,) you can see that the control action data points don't follow the colorbar colors as you would expect it to. To help, here's the code I wrote to make the plot.
% Here, variable{xAxisChoice} and its similiar calls are 500 x 3001
% matrices.
c = parula(height(variable{zAxisChoice}));
figure()
hold on; grid on; grid minor; box on;
scatter3(variable{xAxisChoice}, variable{yAxisChoice}, variable{zAxisChoice}, 0.75, c)
xlabel(name{xAxisChoice});
ylabel(name{yAxisChoice});
zlabel(name{zAxisChoice})
title(['Scenario ' num2str(scenarioChoice)])
cb = colorbar('colormap', c);
clim([min(variable{4}, [], 'all'), max(variable{4}, [], 'all')])
ylabel(cb, 'Control Action, u [1/m]','FontSize', 12);
I'd be willing to switch to surf or scatteredInterpolant if that makes it easier to represent. The essential points are that each point can be seen, and that the colormap can be applied.
4 Comments
When I try to reproduce your plot using random data, with variable{xAxisChoice} et al of size 500x3001
variable = {rand(500,3001),rand(500,3001),rand(500,3001)};
xAxisChoice = 1;
yAxisChoice = 2;
zAxisChoice = 3;
then I get an error:
c = parula(height(variable{zAxisChoice}));
figure()
hold on; grid on; grid minor; box on;
scatter3(variable{xAxisChoice}, variable{yAxisChoice}, variable{zAxisChoice}, 0.75, c)
Maybe it'd be helpful if you upload your data in a mat file.
variable = {rand(500,3001),rand(500,3001),rand(500,3001)};
xAxisChoice = 1;
yAxisChoice = 2;
zAxisChoice = 3;
c = parula(numel(variable{zAxisChoice}));
whos c
figure()
hold on; grid on; grid minor; box on;
scatter3(variable{xAxisChoice}(:), variable{yAxisChoice}(:), variable{zAxisChoice}(:), 0.75, c)
Paul
on 6 Mar 2024
Walter Roberson
on 6 Mar 2024
Edited: Walter Roberson
on 6 Mar 2024
variable = {rand(500,3001),rand(500,3001),rand(500,3001)};
xAxisChoice = 1;
yAxisChoice = 2;
zAxisChoice = 3;
c = variable{zAxisChoice}(:);
figure()
hold on; grid on; grid minor; box on;
scatter3(variable{xAxisChoice}(:), variable{yAxisChoice}(:), variable{zAxisChoice}(:), 0.75, c)
view(3)
colormap(parula)
Accepted Answer
More Answers (0)
Categories
Find more on Color and Styling in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



