MATLAB - 在子图中的某些选定图上添加图例 - for循环

时间:2012-06-19 19:38:03

标签: matlab for-loop legend matlab-figure subplot

我想在子图中添加图例,仅适用于某些图。 这是我的代码:

for j = 1:length(FL)
  for i = 1:length(index_list)
    pos=pos+1;
    subplot(size(FL,1),length(index_list), pos)
    legend(num2str(ms_list(i)), 'Location', 'NorthOutside');
    imagesc(imread(FL{j,:},index_list(i)))
    if i==1
        legend(FL(j),'Location', 'WestOutside')

  end 
end

子图包含从多帧.tif文件中提取的帧。所需帧的索引位于index_list(列)中。所需文件的路径在FL(行)中。我想在图中添加的是每行左侧文件的名称以及每个图像的帧索引。 ms_list包含索引的等效毫秒数,这实际上就是我想要显示的内容。 这样做会在循环中的每个段落返回“Plot empty”。

有什么想法吗?

由于

JC

1 个答案:

答案 0 :(得分:0)

根据您的描述和代码,似乎legend不是您想要的;相反,你想要一个标题(在情节上方)和ylabel(某些情节的左边)。 legend是为图中的特定对象提供标签,例如线序列。

for j = 1:length(FL)
  for i = 1:length(index_list)
    pos=pos+1;
    subplot(size(FL,1),length(index_list), pos)
    title(num2str(ms_list(i))); %#<---title here
    imagesc(imread(FL{j,:},index_list(i)))
    if i==1
        ylabel(FL(j)) %#<---ylabel here    
    end 
  end
end

您收到错误的原因是您将legend应用于一组空轴。 legend标记轴的子项;没有孩子,没有标签,因此错误。