如何在循环中获取线性图上的动态图例?

Posted

技术标签:

【中文标题】如何在循环中获取线性图上的动态图例?【英文标题】:How to Get Dynamic Legend on Linear Graph in Loop? 【发布时间】:2017-02-09 22:58:17 【问题描述】:

差异条件:如何在每次迭代结束时清除动态图例;如何在每次迭代结束时删除拟合的线性线。

我正在尝试扩展线程 Dynamic Legend (Updates in every recursion) 的此答案以在一个图表上迭代图例。 建议在一个线性图上覆盖动态图例

close all; clear all; 

% Test data
aSize=zeros(2,777);
aSize=[[0, 0]' randi(3,2,777)]; % STDEV about 3

x=0:1:180; 

hFig=figure; 

index=1;
while (index<=7); 

    % origo left alone
    aSize(:, index+1) = aSize(:, index+1) + index; % to have linearly increasing trend

    sz=40; 
    legend('-DynamicLegend');
    h = scatter(aSize(1,1:index+1)', aSize(2,1:index+1)', sz, ...
          'MarkerEdgeColor',[0 .5 .5],...
          'MarkerFaceColor',[0 .7 .7],...
          'LineWidth',1.5, ...
          'DisplayName', sprintf('Data'));
    xlabel('width'); ylabel('height');
    hold on; 

    % Optimum
    x=0:1:max( aSize(1, 1:index+1) ); 
    y = x; % assume uniform
    grid on; 
    h1=plot(x,y, 'black', ...
        'DisplayName', sprintf('Optimum'));

    % Fit with R2 linear
    x=aSize(1,1:index+1); 
    b1 = aSize(1,1:index+1)' \ aSize(2,1:index+1)'; 
    yCalc1 = b1 * aSize(1,1:index+1);
    Rsq1 = 1 - sum((y(1:index+1) - yCalc1).^2)/sum((y(1:index+1) - mean(y(1:index+1))).^2)

    % origo needed
    x = [0 x]; 
    yCalc1 = [0 yCalc1]; 
    h2=plot(x(1:index+2)', yCalc1(1:index+2)', '--p', ...
        'DisplayName', sprintf('Fit R2 = %d', Rsq1)); 

    drawnow; 

    index=index+1;

end;

仅添加图例的地方输出不成功

MATLAB:2016a 操作系统:Debian 8.5 6 位 Linux 内核:4.6 的反向移植 硬件:华硕 Zenbook UX303UA

【问题讨论】:

您是在问如何在循环结束时删除以前绘制的数据? 在循环结束前写入hold off。这是否符合您的要求? 我从您的问题中删除了答案部分。问题旨在仅包含问题。我判断您的添加并未对您使用的已经接受的答案提供任何添加,因此在问题中没有任何意义。如果您要添加一些实质性内容,您可以在新答案中随意添加。 【参考方案1】:

删除legend('-DynamicLegend');这一行并将其写在drawnow行之前并在该行之后写hold off。因此,以下将是循环结束时的行。

legend('-DynamicLegend');
drawnow; 
hold off
index=index+1;

【讨论】:

以上是关于如何在循环中获取线性图上的动态图例?的主要内容,如果未能解决你的问题,请参考以下文章

在条形图上的 Plotly 中更改轴/图例名称

Pandas df.plot 子图上有多个图例?

如何将origin多个图层的图例放到一个图上

Power BI 动态图例

如何使用 plotly.graph_object 在仪表图上添加图例

如何在同一个散点图上使用 geom_vline() 和 geom_hline 避免图例中的交叉效应?