2017-05-24 81 views
2

我正在使用單元格數組來顯示多行標題。它有時效果不好,不明白爲什麼。我正在使用subplot來定義我的座標軸;在Matlab中切割多行標題

這是我的代碼。前兩個子圖工作得很好,但是第三個子圖切割,它只顯示最後兩個項目(C和D字符串)。

hf = figure; 
subplot(2, 2, 1); 
title({'test1', 'test2','test3', 'test4'}); 
subplot(2, 2, 3); 
title({'testA', 'testB','testC', 'testD'}); 
subplot(1, 2, 2); 
title({'A', 'B','C', 'D'}); 

我做錯了什麼?

+0

這似乎是一個MATLAB錯誤。 – m7913d

回答

1

作爲一種變通方法,我可以建議你做到以下幾點:

sp3 = subplot(1,2,2); 
title({'A', 'B','C', 'D'}); 
drawnow % force calculating the position *after* inserting the title 
ph = sp3.Position; % get the desired position 
sp3.delete % remove the axes 
subplot(2, 2, 1); 
title({'test1', 'test2','test3', 'test4'}); 
subplot(2, 2, 3); 
title({'testA', 'testB','testC', 'testD'}); 
sp3 = subplot(1,2,2); 
title({'A', 'B','C', 'D'}); 
sp3.Position = ph; % set the axes to the right hight 

subplot_title

的想法很簡單:

  1. 地方軸,你在想他們吧所以他們正確調整大小
  2. 獲取他們的位置值
  3. 刪除它們 - 所以它們不會干涉其他軸
  4. 再次放置所有軸
  5. 將所有剪切軸的位置設置爲正確的值。

訣竅是使用drawnow,所以Matlab實際上在獲取位置之前放置了軸的所有部分,否則它出錯了。

+0

我已經接受了答案,但通過嘗試使用MATLAB 2017a上的代碼,標題仍然在右側的圖上。它顯示所有東西,如果我最大化數字窗口。 – oro777

+0

@ oro777我現在修復它在所有版本中工作。我現在也明白爲什麼它以前沒有工作。 – EBH

+0

我已經在2017a再次測試過,它按預期工作,謝謝。 – oro777