如何在MATLAB中为等高线图的轮廓线添加字符串标签

5

我想知道是否可以在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

这段代码的问题在于标签是由MATLAB自动生成的。尽管我可以轻松更改标签的轮廓,但无法更改它们获得的标签。
理想情况下,我希望使用我自己定义的一组字符串来标记它们。然而,如果不可能的话,我想知道是否可以更改标签的数字格式。其原因是上述代码实际上产生了一个错误率的等高线图,我想将其显示为百分数值(即在等高线标签中使用1%,而不是0.01等)。
1个回答

4
在这种情况下,hcl实际上是一个数组,它存储了绘图中每个轮廓标签的句柄。当您使用该数组设置属性(如您的代码中所示)时,保留html标记。
set(hcl, 'name', 'value')

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

您可以通过迭代数组来更改单个标签的属性。例如,以下是如何添加百分号的示例:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接