如何在MATLAB中为轮廓图放置轮廓上的字符串标签

Ber*_* U. 5 matlab matlab-figure

我想知道是否可以用一组用户定义的字符串标记MATLAB轮廓图的轮廓?

我目前正在使用以下代码截取器来生成标记的轮廓图:

%Create Data
X = 0.01:0.01:0.10
Y = 0.01:0.01:0.10
Z = repmat(X.^2,length(X),1) + repmat(Y.^2,length(Y),1)';

%Create Plot 
hold on
[C,h] = contourf(X,Y,Z);

%Add + Format Labels to Plot
hcl = clabel(C,h,'FontSize',10,'Color','k','Rotation',0);
set(hcl,'BackgroundColor',[1 1 1],'EdgeColor',[0 0 0],'LineStyle','-',)
hold off
Run Code Online (Sandbox Code Playgroud)

此代码的问题在于标签是由MATLAB自动生成的。即使我可以轻松更改标签的轮廓,也无法更改它们得到的标签。

理想情况下,我想用一组我自己定义的字符串来标记它们。但是,如果这不可能,那么我想知道是否可以更改标签的数字格式。原因是上面的代码实际上生成了错误率的轮廓图,我想将其显示为%值(即在轮廓标签中使用1%,而不是0.01等)。

Hug*_*not 4

在这种情况下,hcl 实际上是一个数组,它存储绘图上每个等高线标签的句柄。当您使用数组设置属性时(如代码中所示),

set(hcl, 'name', 'value')
Run Code Online (Sandbox Code Playgroud)

您将每个标签的属性设置为相同的值。

您可以通过迭代数组来更改各个标签的属性。例如,这是添加百分号的方法:

for i = 1:length(hcl)
    oldLabelText = get(hcl(i), 'String');
    percentage = str2double(oldLabelText)*100;
    newLabelText = [num2str(percentage) ' %'];
    set(hcl(i), 'String', newLabelText);
end
Run Code Online (Sandbox Code Playgroud)