MATLAB caxis分配值

问题描述:

我有一个3d的粒子图。我有500帧这些粒子的运动。 从包含位置(x,y,z)的3D矩阵接收帧。矩阵中的另一列是位移。假设它是我3D矩阵中的第7列。 如何根据这些位移值为每个粒子分配颜色值?MATLAB caxis分配值

我知道caxis([0 1]),但它是如何知道在确定它应该是什么颜色时要查看哪一列。我还有其他专栏。有没有办法分配这个?

当前代码:

filename = 'testing.gif' 
FigHandle = figure('Position', [100, 100, 800, 700]); 
for i = 1:499 
    s = 2; 
    scatter3(ans.atom_data(:,3,i),ans.atom_data(:,4,i),ans.atom_data(:,5,i),s) 
    colorbar 
    caxis([0,1.61]) 
    T(i) = getframe 
end 
+0

你的位移的范围是什么? – 2014-08-28 17:20:38

+0

我们只是说0-1.5(我可以稍后编辑) – 2014-08-28 17:21:02

+0

好的。听起来不错。你用什么函数来绘图,所以我可以具体说明如何设置颜色? – 2014-08-28 17:22:35

颜色由色彩映射服用。大多数matlab绘图功能允许您明确设置颜色映射。对于scatter3,您将不得不传入第5个参数,称为C。根据mathworks documentation on scatter3

如果C是具有长度等于X,Y的长度,和Z的向量,然后 C中的值线性映射到颜色在当前 颜色表。

这意味着,你可以通过在第7栏,无需调整caxis

filename= 'testing.gif' 
    FigHandle = figure('Position', [100, 100, 800, 700]); 
for i=1:499 

    s=2; 
    scatter3(ans.atom_data(:,3,i),ans.atom_data(:,4,i),ans.atom_data(:,5,i),s,ans.atom_data(:,7,i)) 
    colorbar 
    T(i)=getframe 
end 

如果默认的彩色地图不理想,可以随时通过传递一个创建自己的n x 3数组到colormap函数。

最后,你应该意识到这个事实,即ans变量在matlab中有特殊的含义,并会随着你运行的每个语句而改变。您可能希望将数据存储到具有不同名称的变量中。

+0

谢谢!这有帮助! – 2014-08-28 19:00:05