【问题标题】:non-homogenous grouped data in MATLAB plotyy()MATLAB plotyy() 中的非同质分组数据
【发布时间】:2015-08-19 17:51:18
【问题描述】:

我必须在一个绘图窗口中绘制 1 个线图和 3 个分组散点图。

以下是我试过的代码,

figure;
t1=0:0.1:10;
X = 2*sin(t1);
ts = 0:1:10;
Y1 = randi([0 1],length(ts),1);
Y2 = randi([0 1],length(ts),1);
Y3 = randi([0 1],length(ts),1);
plotyy(t1,X,[ts',ts',ts'],[Y1,Y2,Y3],'plot','scatter');
%plotyy(t1,X,[ts',ts',ts'],[Y1,Y2,Y3],'plot','plot');

以下是我的问题,

  1. 如果我将 'scatter' 替换为 'plot' 则上述代码有效(请参阅注释掉的行),但 'scatter' 仅适用于 1 个数据集而不适用于 3 个数据集。为什么?

    李>
  2. 如何分别为 3 个分组的散点图或图分配颜色?

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    阅读您收到的错误消息:

    使用散点图时出错(第 44 行)X 和 Y 必须是相同的向量 长度。

    如果您查看 scatter 的文档,您会发现输入必须是向量,并且您正在尝试传递数组。

    一种选择是堆叠向量:

    plotyy(t1,X,[ts';ts';ts'],[Y1;Y2;Y3],'plot','scatter');
    

    但我不知道这是否是您要查找的内容,它肯定看起来不像注释行。您必须阐明您希望最终情节的样子。

    至于第二个问题,老实说,我建议不要使用plotyy。我可能有偏见,但我发现它对我的口味来说太挑剔了。我喜欢使用的方法是堆叠多个轴并绘制到每个轴。这让我可以完全控制我的所有图形对象和绘图。

    例如:

    t1=0:0.1:10;
    X = 2*sin(t1);
    ts = 0:1:10;
    Y1 = randi([0 1],length(ts),1);
    Y2 = randi([0 1],length(ts),1);
    Y3 = randi([0 1],length(ts),1);
    
    % Create axes & store handles
    h.myfig = figure;
    h.ax1 = axes('Parent', h.myfig, 'Box', 'off');
    h.ax2 = axes('Parent', h.myfig, 'Position', h.ax1.Position, 'Color', 'none', 'YAxisLocation', 'Right');
    
    % Preserve axes formatting
    hold(h.ax1, 'on');
    hold(h.ax2, 'on');
    
    % Plot data
    h.plot(1) = plot(h.ax1, t1, X);
    h.scatter(1) = scatter(h.ax2, ts', Y1);
    h.scatter(2) = scatter(h.ax2, ts', Y2);
    h.scatter(3) = scatter(h.ax2, ts', Y3);
    

    给你:

    现在您可以完全控制所有轴和线属性。请注意,这假设您拥有 R2014b 或更高版本,以便使用点符号访问 h.ax1Position 属性。如果您运行的是旧版本,则可以改用get(h.ax1, 'Position')

    【讨论】:

    • 只是为了澄清,在 plotyy(t1,X,[ts';ts';ts'],[Y1;Y2;Y3],'plot','scatter') 行中对 3 个向量进行垂直连接,生成一个结果向量。这不是我想要的。这三个向量是我要比较的单独数据集。
    • @Naveen 是的,我知道。这是使用plotyy 将单个向量传递给scatter 命令的唯一方法。我正在用更通用的解决方案更新我的答案。
    • 另外,运行下一节会出现错误,提示“h.myfig”未定义。
    • @Naveen 抱歉,我想您可能一直在查看过去的编辑。它现在应该可以使用了。
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多