2012-06-25 325 views
1

如何將xlabel的位置居中以使其位於圖形中間?我想xlabel的中心到與字幕的中心使用乳膠在MATLAB中定位xlabel位置

+0

'xlabel'命令爲當前('gca')軸圖形對象創建一個'text'圖形對象,而不是圖形。這是一個易於使用的功能,它設置當前軸圖形對象的'XLabel'屬性。你能否提供一些關於「標題中心」的含義的更多信息?你是指當前軸對象的標題(使用'title'函數設置)? –

+0

「標題中心」指的是LaTeX中圖形文字(標題)的中心。如果我插入一個圖形,x軸標籤位於圖形文本中心的右側。如果可能,我想將x軸標籤稍微向左移動以對齊兩者。 – martinweiss

+1

你可以發佈一些MATLAB代碼嗎?或者也許是你的MATLAB圖形的截圖,看看問題。你使用LaTeX插入數字?有點困惑:) –

回答

1

xlabel函數創建一個string圖形對象,並將此作爲當前軸對象的屬性XLabel時神韻:。當致電xlabel時,您可以定義此string對象的屬性。您可以通過調整默認設置爲[0 0]的Position屬性來調整字符串對象中心的位置。

首先,你得到這個職位是什麼,現在(繪圖和使用xlabel後):

vec_pos = get(get(gca, 'XLabel'), 'Position'); 

然後你更新位置(-0.5比如調整X):

set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.5 0 0]); 

就文檔而言,這是在默認的x軸的數據單元中完成的。在我看來,標籤「Time(s)」位於0.13s(根據你的數字)。讓我們把它調整到左邊0.008秒到0.122s(一個「猜測」)。

強制它是「數據」單位和0.008調整:

str_defaultUnits = get(get(gca, 'XLabel'), 'Units'); % copy this 
set(get(gca, 'XLabel'), 'Units', 'data'); % change it 
set(get(gca, 'XLabel'), 'Position', vec_pos + [-0.008 0 0]); % adjust position 
set(get(gca, 'XLabel'), 'Units', str_defaultUnits); % set it back as it was 

在另一方面:你想達到什麼是錯的有點,我會說:)軸的標籤不應該強制與整個數字標題對齊。爲什麼要這樣做?數字標題集中在整個數字上,而不僅僅是繪圖區域。我擔心它最終看起來很奇怪。你的選擇當然。

+0

這似乎並不奏效。 xlabel消失。我也試過這個,但xlabel仍然消失:http://www.mathworks.com/matlabcentral/newsreader/view_thread/111332 – martinweiss

+0

嗯,它可能是單位可能不正確,因爲你使用的圖像?忽略了那一個。 「vec_pos」給你什麼(沒有調用我給出的任何'xlabel'例子)? –

+0

vec_pos = [2.9942 -3.2705 1.0001]。如果我更改了任何數字,標籤就會消失。我不認爲它與單位有關,因爲我在腳本的最後輸出圖像。 – martinweiss

1

你試圖做什麼的細節將取決於你的matlab打印設置和乳膠選項(例如標題raggedright或居中),但這至少應該把你的xlabel放在圖的中心,而不是軸的中心。

fh=figure; 
ah=axes; 
plot(ah,[2.0:10],[2:10]) 
xlh=xlabel(ah,'my xlabel'); 
drawnow; 
xlh_pos=get(xlh,'position'); 
ah_pos=get(ah,'position'); 
x_lim=xlim; 

xlh_pos_fig=0.5;%put it in the middle 
xlh_pos(1)=(xlh_pos_fig - ah_pos(1))*(x_lim(2)-x_lim(1))/ah_pos(3)+x_lim(1); 
set(xlh,'position',xlh_pos);