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 によって自動的に生成されることです。ラベルである輪郭は簡単に変更できますが、取得するラベルを変更することはできません。

理想的には、自分で定義した一連の文字列でラベルを付けたいと思います。ただし、それが不可能な場合は、ラベルの数値形式を変更できるかどうか疑問に思っています。この理由は、上記のコードがエラー率の等高線図を実際に生成し、% 値として表示したいからです (つまり、等高線ラベルで 0.01 の代わりに 1% を使用します)。

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 に答える