指示区域图中填充区域的名称 - Matlab?

Indicate name of filled areas inside area plot - Matlab?

仅通过查看图例(大约 16 个!),很难在这个区域图中识别出许多填充区域中的每一个。

所以,我想知道是否有办法在图中放置某种标签(也许带有指针?)以清楚地标识每个填充区域?

谢谢!

可能有一种我不知道的内置方法,但我发现较低级别的 text 函数通常是此类事情的最佳答案。

这需要一些内务处理 - 您必须提供 x 和 y 坐标以及要打印的文本,例如

text(20, 400, 'Region 4')

这将使标签以 (20,400) 为中心(请参阅 docs 中的 'VerticalAlignment''HorizontalAlignment' 名称-值对进行微调),所以对我来说通常是最好编写一个小的包装器来从数据中找出它们。当然,这通常特定于您正在使用的特定类型的数据,很少推广到面积图的其他用途,但这很可能是为什么还没有通用标签功能(我知道)的原因。

这是使用 annotation objectstextarrow 选项的替代方法,它显示文本和箭头。这可能对您指向文本会隐藏数据的狭窄区域很有用。

例如:

clear
clc
close all

x = 1:128;

%// Plot data
figure
hAxes1 = axes('Position',[.1 .1 .6 .8]);
image(x.');
axis off
colormap(jet(128))

%// Define labels
ColorLabels = {'Red';'Orange';'Green';'Blue';'More blue'};

%// Define starting and ending x and y positions
xstart = .8;
xend = .6;
ystart = linspace(.1,.8,numel(ColorLabels));
yend = linspace(.15,.8,numel(ColorLabels));
for k = 1:numel(ColorLabels)

    annotation('textarrow', [xstart xend],[ystart(k) yend(k)],...
           'String', ColorLabels{k});    
end

给出以下输出: