-1

我正在尝试帮助我的女朋友为一个实验制作动画,其中基本上这组细胞在培养皿中移动,并且有一个摄像头随着时间的推移跟踪它们各自的位置。收集的数据以时间间隔和当时组中特定单元格的位置的形式出现。在考虑 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 中会很讨厌)。

4

2 回答 2

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 情节往往是混乱和混乱的。我可能会去为每个单元格创建一个图形,而不是用标记来区分它们。

于 2017-04-20T08:32:59.430 回答
0

听起来您可能已经有代码可以在 3D 中绘制单个时间点的数据(或者您觉得自己很舒服可以自己弄清楚这部分)。如果这样做/可以做到,那么另一种方法是使用带有滑块的Matlab GUI,该滑块控制正在绘制的时间点。预期的结果将是一个交互式窗口,每当您调整滑块时,都会更新绘图以在滑块确定的时间以 3D 显示单元格位置。

或者,如果您正在寻找一个非交互式视频,它只是将随时间的运动显示为演示(例如,作为演示的一部分的华丽视觉效果),有一些方法可以将一系列情节转换为视频。查看发布到 File Exchange的此工具。

于 2017-04-20T21:29:04.323 回答