我想查看时间序列中的二维数据-我的第一个想法是使用散点图,您可以在其中轻松地探索时间点到时间点。我有可以使用的功能吗?我查看了scatter3,但它只能绘制完全三次的数据,而不是如下所示:
例如
data=rand(5,5,3);
scatter3(data(1,:,:),data(:,1,:),data(:,:,1)) %throws an error
谢谢
编辑:最初我想到的是类似> this << / p>
答案 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坐标,并希望按顺序循环遍历每个时间点。这似乎比较棘手,也许其他人将比我有更好的答案。还有一些问题可能会有用: