我想知道是否可以用一组用户定义的字符串标记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等)。
答案 0 :(得分: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