我正在努力帮助我的女朋友为一个实验做动画,基本上这组细胞在培养皿上移动,并且随着时间的推移,有一个摄像机跟踪他们各自的位置。收集的数据是时间间隔的形式,以及当时组中特定细胞的位置。在考虑5个重要值时,每个元组的形式如(C,t,X,Y,Z),其中C =单元格数,t =时间,X,Y和Z是位置。 excel数据包有几百个这样的元组,大约10个单元格C = {1,2,3,...,10}超过40秒。
我在excel和MATLAB程序中看到了宏,你可以在3D空间中绘制散点图,并能够旋转它和东西,但我想知道将这一步更进一步并有一些动画所涉及的工作散点图上的点随着时间的增加而变化。就像为3D散点图设置动画一样,当时钟长达20秒时,点会随着值的变化而变化。
有没有人有过使用编程语言或excel做这样的事情的经验(虽然我认为它在VBA中会非常讨厌)。
答案 0 :(得分:0)
可能会让你进入MATLAB的东西:
% generate some data to visualize
z = 0:pi/50:10*pi;
x = sin(z);
y = cos(z);
% split by cells
idx_C1 = 1:100;
idx_C2 = 101:200;
t_C1 = linspace(now-2,now-1,100);
t_C2 = linspace(now-1,now,100);
% plot as 3d scatter plot - distinguish cells by marker style
figure
p1 = scatter3(x(idx_C1),y(idx_C1),z(idx_C1),[],t_C1,'s','DisplayName','Cell 1');
hold on;
p2 = scatter3(x(idx_C2),y(idx_C2),z(idx_C2),[],t_C2,'o','DisplayName','Cell 2');
% color code the time value
hc = colorbar;
hc.TickLabels = string(datetime(hc.Ticks,'ConvertFrom','datenum'));
% show legend
legend('show','Location','northwest');
请记住,应始终使用手头的数据进行可视化,您需要找出最适合您问题的方法。
我选择按原样使用x,y,z坐标并对时间变量进行颜色编码。我用不同的标记绘制不同的细胞。然而, 这样的5D情节往往是混乱和混乱。我可能会为每个细胞创建一个数字,而不是用标记区分它们。
答案 1 :(得分:0)
听起来你可能已经有了代码来在3D中的单个时间点绘制数据(或者你觉得足够舒服以自己计算出那个部分)。如果完成/可行,那么另一种方法是使用带有滑动条的Matlab GUI来控制绘制的时间点。预期的结果将是一个交互式窗口,无论何时调整滑块,都会更新绘图以在滑块确定的时间以3D显示单元格位置。
或者,如果您正在寻找一个非交互式视频,只是简单地显示随时间的移动作为演示(例如,作为演示文稿的一部分的华丽视觉),有一些方法可以将一系列图表转换为视频。请查看发布到文件交换的this tool。