2013-03-14 37 views
2

我需要顯示在MATLAB條形圖的量,XTick旨意通過標籤的單元陣列進行標記。到目前爲止,我在圖的底部沿着x軸顯示XTickLabel s,但由於圖中有很多條,我想使用數據工具,以便在選擇特定條時,相應的條XTickLabel應顯示爲其X座標,而不是其數字索引。使用數據工具,以顯示作爲XTickLabel座標

甲簡單的例子將是:

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

其中我希望

X = a 
Y = 1 

時所得到的圖中選擇了第一條將被顯示。

幫助將不勝感激!

P.S.我不打算在默認情況下在條的頂部顯示標籤。

回答

2

進入數據光標模式並選擇一個條。

現在的數據點從菜單中單擊鼠標右鍵,選擇「編輯文字更新功能...」。

enter image description here

修改功能如下:

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的。

然後檢查的情況下,他們實際上是雙打,而不是字符串單元陣列,並在必要時將它們轉換。

最後,它會顯示正確的標籤的文本。

保存回調爲myfunction.m,你應該是金:

enter image description here

如果你想以編程方式做到這一點,那麼你需要獲取數據光標經理的相關數字。像這樣的東西應該工作:

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

其中的第三個參數set的句柄要使用設置文本的功能(例如,你可以使用@myfunction,如果你保存先前的功能myfunction.m)。這就給了你這樣的事情:

enter image description here

+0

它不僅很好地工作,但我也學到新的東西。萬分感謝! :) – 2013-03-14 10:45:34

+0

對不起,這是一個麻煩,但它有可能從我的代碼本身選擇文本更新功能? – 2013-03-14 10:52:05

+0

@RoneyMichael我編輯,告訴你如何做到這一點。 – 2013-03-14 10:57:12

相關問題