2013-06-22 21 views
2

我想要一個以一行爲中心的文本字符串。我已經試過這樣:如何在一條線上居中文本

figure 
axis([0,10,0,10]) 
d = 2.81; 
center = 5; 
line([center - d,center + d],[5,5]) 
th = text(center,4.9,'mmmmmmmmmmmmmmmmmmmmmm'); 
set(th,'HorizontalAlignment','center') 

text is not centered on line

文本與右邊的線對齊而不是在左側。上面的圖像是一個屏幕截圖。在保存的圖中,我並沒有始終存在這個問題。

有沒有辦法將文本排成一行?我不擔心現在調整圖的大小,但我想使用默認字體。

回答

1

似乎無法精確定位文本。我嘗試獲取文本和繪製線的大小並相應地重新定位文本。有關文本屬性的更多信息here

str1 = 'mmmmmmmmmmmmmmmmmmmmmm'; 
center = 5; 
text_line_spacing = 0.2; 

figure 
axis([0,10,0,10]) 

% Set text initialy 
th = text(0,0,str1); 

% Get size of text 
ext = get(th, 'Extent'); 
% text_width = ext(3); 
% text_height = ext(4); 

% Draw appropriate line 
left = center - ext(3)/2; 
right = center + ext(3)/2; 
line([left right], [5 5]) 

% Reposition original text 
set(th, 'Position', [left 5+text_line_spacing]);