3D scatter plot with 4D data

2019-01-15 22:59发布

问题:

I need to plot a 3D figure with each data point colored with the value of a 4th variable using a colormap. Lets say I have 4 variables X,Y,Z and W where W = f(X,Y,Z). I want a 3D plot with X, Y, and Z as the three axis. The statement scatter3(X,Y,Z,'filled','b') gives me a scatter plot in 3D but I want to incorporate the value of Z in the graph by representing the points as an extra parameter (either with different areas :bigger circles for data points with high value of Z and small circles for data points with low value of Z or by plotting the data points with different colors using a colormap). However, I am a novice in MATLAB and dont really know how to proceed. Any help will be highly appreciated.

Thanks in advance!

回答1:

So just use z for the size vector (4th input) as well as the color vector (5th input):

z = 10*(1:pi/50:10*pi);
y = z.*sin(z/10);
x = z.*cos(z/10);

figure(1)
scatter3(x,y,z,z,z)

view(45,10)
colorbar

The size vector needs to be greater 0, so you may need to adjust your z accordingly.



回答2:

You are already nearly there... simply use

scatter3(X,Y,Z,s,W);

where s is the point size (scalar, e.g. 3) and W is a vector with your W values. You might also want to issue an

set(gcf, 'Renderer','OpenGL');

where gcf gets your current figure you are plotting in to significantly increase responsiveness when scattering a lot of data.