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
答
颜色由色彩映射服用。大多数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
你的位移的范围是什么? – 2014-08-28 17:20:38
我们只是说0-1.5(我可以稍后编辑) – 2014-08-28 17:21:02
好的。听起来不错。你用什么函数来绘图,所以我可以具体说明如何设置颜色? – 2014-08-28 17:22:35