Matlab散点图时间序列

时间:2019-08-24 13:48:57

标签: matlab data-analysis

我想查看时间序列中的二维数据-我的第一个想法是使用散点图,您可以在其中轻松地探索时间点到时间点。我有可以使用的功能吗?我查看了scatter3,但它只能绘制完全三次的数据,而不是如下所示:

例如

data=rand(5,5,3);
scatter3(data(1,:,:),data(:,1,:),data(:,:,1)) %throws an error

谢谢

编辑:最初我想到的是类似> this << / p>

1 个答案:

答案 0 :(得分:1)

scatter3似乎适用于3D图,但是您说您的数据是2D。

对于一个简单的时序图,您甚至可以使用plot:

figure
nPoints = 25;
dataX = 1:nPoints;
dataY = rand(1,nPoints);
plot(dataX,dataY, 'o-')

但是,您在链接中提供的示例看起来与其他示例类似,因此您所追求的似乎是分散(而不是分散3)。也许是这样的吗?

figure
nPoints = 25;
dataX = 1:nPoints;
dataY = rand(1,nPoints);
dataArea = rand(1,nPoints)*100;
dataColours = rand(nPoints,3);

scatter(dataX,dataY,dataArea,dataColours)

编辑: 我想我更了解您的意思,对不起,我没有看到链接底部的按钮,但是如果我错了,请纠正我。因此,对于在不同时间点的多个对象,您具有一组XY坐标,并且理想情况下,您希望绘制每个对象(在2个维度上)的XY坐标随时间(在3个维度上)的变化方式。您最初使用scatter3的方法是尝试制作一个简单的3d图形,但是理想情况下,您可能想要一个可以动画或交互式的2d图形来更改在任何给定时间显示的时间点?

回到您的原始问题,我认为您尝试使用scatter3(或plot3可能也有用)的问题是我不确定您的虚拟数据将代表什么。您将数据创建为5x5x3矩阵,并且我假设它可以表示3个不同时间间隔的25个数据点吗?但是,哪些数据表示X,哪些Y坐标?它将与以下内容一起使用,其中每个变量代表5个不同时间点(行)上6个对象(列)的X / Y / Z坐标

myX = rand(5,6,1);
myY = rand(5,6,1);
% I'm making each time point increase linearly.
myZ = repmat((1:size(myX,1))', 1, size(myX,2));
plot3(myX, myY, myZ, 'o-')
grid on
% Note I find the default dimensions it treats as X, Y and Z unintuitive (e.g. the Z dimension is the vertical dimension), but one could swap the input arguments around to overcome this.

但是,尤其是如果您有很多点,我不确定这样的图形将有多清晰,尤其是与链接中的示例相比。

相反,理想情况下,您似乎只希望一次仅绘制一个时间点上所有对象的XY坐标,并希望按顺序循环遍历每个时间点。这似乎比较棘手,也许其他人将比我有更好的答案。还有一些问题可能会有用:

  • 您在多大程度上关心过渡的平滑性。在示例链接中,圆圈从一个位置平滑移动到另一位置,而不仅仅是在点之间跳跃/传送。
  • 理想情况下,您是否想要一个功能来生成“动画”,从头到尾循环遍历所有时间点,或手动指定/更改要显示的时间点的方式?如果是前者,则此功能可能会很有用(尽管我自己尝试过)https://uk.mathworks.com/matlabcentral/fileexchange/42305-multicomet