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等)。
在这种情况下,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)