2

XTicks がラベルのセル配列でラベル付けされる棒グラフを MATLAB で表示する必要があります。現在XTickLabel、図の下部に x 軸に沿って s を表示していますが、図には多数のバーがあるため、特定のバーを選択すると、対応するXTickLabel必要があるデータ ツールを使用したいと考えています。X数値インデックスではなく座標として表示されます。

簡単な例は次のとおりです。

x=[1 2 3];
xd={'a','b','c'};
bar(x);
set(gca,'ylim',[0,5],'xticklabel',xd);

私が望むところ

X = a
Y = 1

結果の図で最初のバーが選択されたときに表示されます。

助けていただければ幸いです。

PSデフォルトでバーの上部にラベルを表示するつもりはありません。

4

1 に答える 1

2

データ カーソル モードに入り、バーを選択します。

データ ポイントを右クリックし、メニューから [テキスト更新関数の編集...] を選択します。

ここに画像の説明を入力

関数を次のように変更します。

function output_txt = myfunction(obj,event_obj)
    pos = get(event_obj, 'Position');
    lab = get(gca, 'XTickLabel');
    if isa(lab,'double')
        lab = arrayfun(@(x){num2str(x)},lab);
    end
    output_txt = {['X: ', lab{pos(1)}], ['Y: ', num2str(pos(2),4)]};
end

まず、これは xticklabels のセットを取得し、それらを に格納しますlab

次に、文字列のセル配列ではなく実際に double であるかどうかをチェックし、必要に応じて変換します。

最後に、正しいラベルのテキストが表示されます。

コールバックを次のように保存するmyfunction.mと、ゴールデンになるはずです。

ここに画像の説明を入力

プログラムで実行する場合は、関連する Figure のデータ カーソル マネージャーを取得する必要があります。このようなものが動作するはずです:

>> bar([1,2,3])
>> dcm = datacursormode(gcf);
>> set(dcm, 'UpdateFcn', @(a,b) {'Hello', 'World'})

の 3 番目の引数は、テキストの設定に使用する関数のハンドルです (たとえば、前の関数を として保存した場合にset使用できます)。それはあなたに次のようなものを与えます:@myfunctionmyfunction.m

ここに画像の説明を入力

于 2013-03-14T10:35:30.513 に答える