【问题标题】:matlab scatter plot time seriesmatlab散点图时间序列
【发布时间】:2019-08-24 13:48:57
【问题描述】:

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

例如

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

谢谢

编辑:最初我有类似 >this

【问题讨论】:

    标签: matlab data-analysis


    【解决方案1】:

    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 坐标,并有一种方法可以按顺序循环遍历每个时间点。这似乎更棘手,也许其他人能够比我回答得更好。还有几个问题可能有用:

    • 您有多在意过渡的平滑度。在示例链接中,圆圈从一个位置平滑地移动到另一个位置,而不仅仅是在点之间跳跃/传送。
    • 理想情况下,您是否想要一个能够产生“动画”的函数,从头到尾循环遍历所有时间点,或者手动指定/更改显示哪个时间点的方法。如果是前者,也许这个功能会很有用(虽然我自己已经试过了)https://uk.mathworks.com/matlabcentral/fileexchange/42305-multicomet

    【讨论】:

    • 把它想象成一部电影,问题基本上是我如何得到这个二维数据的电影。自然,我的思绪跳到了 3D 数据上。你的最后一个情节还可以,但是我想要一个时间序列,就像在网站上一样,按“随机化”来获取新数据。我想关注那些数据点的变化
    猜你喜欢
    • 2017-09-13
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多