【问题标题】:How can you set the XData of a Matlab line graph plot with a 2D array?如何使用二维数组设置 Matlab 折线图的 XData?
【发布时间】:2015-11-25 00:41:10
【问题描述】:

我在动态更改绘图上显示的数据时遇到了一些问题。数据集存储在一个不同维度的二维数组中,在程序运行期间,只有矩阵的宽度会发生变化——所有元素的长度总是相同的。这里的目的是让矩阵的每一行在折线图上用一条线表示。

一个例子:

data = [1, 2, 3; 3, 4, 5; 4, 5, 6];
p = plot(data);
drawnow;

new_data = [7, 8, 9; 1, 2, 3; 4, 5, 6];
set(p, 'XData', new_data);
drawnow;

当数据格式更好时,此方法适用于更新绘图,但是我似乎无法找到一种方法以允许绘图的有用格式组织数据。

【问题讨论】:

  • 只是备注:MATLAB 是列专业。这意味着如果您将矩阵作为输入发送到plot,它将为您的矩阵的每个列绘制一个line。 transpose 函数(简写符号:.')可以在必要时排列您的矩阵。

标签: matlab plot


【解决方案1】:

要设置多个属性(因为p 是线条对象的句柄数组),属性名称 以及要设置的属性都需要是元胞数组,参见例如this documentation page 以“为多行设置不同值的线型”为例。

在您的示例情况下,这将起作用:

set(p, {'XData'}, mat2cell(new_data, ones(1,3), 3));

另请参阅mat2cell,在这种情况下,我使用它将new_data 重塑为一个 3x1 元胞数组,每个元胞数组包含来自new_data 的 1x3 行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多