我需要绘制一个图表,其中每个点(x,y,z)都根据其值分配颜色。我怎样才能在Matlab中做到这一点? 我试过了: scatter3(x,y,z,c) 但是我的颜色很难。
考虑这个例子: (x_i,y_i,z_i)具有v_i的值。我希望最大值的点为红色,最小值的点为蓝色。
答案 0 :(得分:1)
你必须使用它:
scatter3(x, y, z, s, c)
其中s
是标记的大小。
如果您像使用它一样使用它,Matlab认为颜色是一个大小值,很可能会返回错误。
答案 1 :(得分:1)
使用此代码。我假设你需要z
的颜色。这就是为什么scatter3中有第二个z
。您可以根据显示的颜色将其替换为另一个矩阵。
s=50; %size of marker
scatter3(x, y, z, s ,z,'filled');
colormap(jet);
colorbar;
如果您需要颜色变化蓝白红色。然后使用此代码。
s=50; %size of marker
scatter3(x, y, z, s ,z,'filled');
m = size(get(gcf,'colormap'),1)/2;
steps = (0:m-1)'/max(m-1,1);
cm_red_blue = [ steps steps ones(m,1);ones(m,1) flipud(steps) flipud(steps) ];
colormap(cm_red_blue);
colorbar;