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 等)。

4

1 回答 1

4

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

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
于 2013-05-23T21:53:49.593 回答