scatter3 似乎是用于 3D 绘图的,但您说您的数据是 2D。
对于一个简单的时间序列图,您可能甚至可以只使用 plot:
figure
nPoints = 25;
dataX = 1:nPoints;
dataY = rand(1,nPoints);
plot(dataX,dataY, 'o-')
但是,您在链接中提供的示例看起来像其他东西,所以看起来像 scatter(而不是 scatter3)可能是您所追求的。也许是这样的?
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 坐标,理想情况下,您想要绘制每个对象的 XY 坐标(二维)如何随时间(3 维)变化。您最初使用 scatter3 的方法是尝试制作一个简单的 3d 图形,但理想情况下,您可能想要一个可以动画或交互式的 2d 图形来更改在任何给定时间显示的时间点?
回到您最初的问题,我认为您尝试使用 scatter3 (或 plot3 也可能有用)的问题是我不确定您的虚拟数据将代表什么。您将数据创建为 5x5x3 矩阵,我假设它可能代表 3 个不同时间间隔的 25 个数据点?但是,哪些数据代表 X,哪些代表 Y 坐标?它将与以下内容一起使用,其中每个变量代表 6 个对象(列)在 5 个不同时间点(行)的 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 坐标,并有一种方法可以按顺序循环遍历每个时间点。这似乎更棘手,也许其他人能够比我回答得更好。还有几个问题可能有用: