Matlab多個Figure圖合成一個Fig


案例:之前跑過的程序 已經生成了多個matlab圖,現在需要進行合並到一個圖中。

解決方案,利用圖像句柄把figure圖像中的參數讀入到內存中,然后重新subplot繪制。

程序如下:

Code    View Copy Print
  1. clc;clear;   
  2. open(‘./test_1.fig’)   
  3. figure_info=findall(gcf,’type’,'line’);    
  4. xdata1 = get(figure_info,’xdata’);   
  5. ydata1 = get(figure_info,’ydata’);   
  6. color1 = get(figure_info,’color’);   
  7. subNum1 = length(xdata1);   
  8.   
  9. open(‘./test_2.fig’)   
  10. figure_info=findall(gcf,’type’,'line’);    
  11. xdata2 = get(figure_info,’xdata’);   
  12. ydata2 = get(figure_info,’ydata’);   
  13. color2 = get(figure_info,’color’);   
  14. subNum2 = length(xdata2);   
  15.   
  16. open(‘./test_3.fig’)   
  17. figure_info=findall(gcf,’type’,'line’);    
  18. xdata3 = get(figure_info,’xdata’);   
  19. ydata3 = get(figure_info,’ydata’);   
  20. color3 = get(figure_info,’color’);   
  21. subNum3 = length(xdata3);   
  22.   
  23. open(‘./test_4.fig’)   
  24. figure_info=findall(gcf,’type’,'line’);    
  25. xdata4 = get(figure_info,’xdata’);   
  26. ydata4 = get(figure_info,’ydata’);   
  27. color4 = get(figure_info,’color’);   
  28. subNum4 = length(xdata4);   
  29.   
  30. %%   
  31.   
  32. subplot(2,2,1)   
  33. for i=subNum1:-1:1   
  34.     if length(xdata1{i})==1   
  35.         break;   
  36.     end   
  37.     plot(xdata1{i},ydata1{i},‘.’,’color’,color1{i})   
  38.     hold on;   
  39. end   
  40. title(‘(a). K-means (TF-IDF)’)   
  41. set(gca,’xtick’,[]);   
  42. set(gca,’ytick’,[]);   
  43. % box off;   
  44. % axis off;   
  45. subplot(2,2,2)   
  46. for i=subNum2:-1:1   
  47.     if length(xdata2{i})==1   
  48.         break;   
  49.     end   
  50.     plot(xdata2{i},ydata2{i},‘.’,’color’,color2{i})   
  51.     hold on;   
  52. end   
  53. title(‘(b). Spectral Clustering (best)’)   
  54. set(gca,’xtick’,[]);   
  55. set(gca,’ytick’,[]);   
  56. % box off;   
  57. % axis off;   
  58. subplot(2,2,3)   
  59. for i=subNum3:-1:1   
  60.     if length(xdata3{i})==1   
  61.         break;   
  62.     end   
  63.     plot(xdata3{i},ydata3{i},‘.’,’color’,color3{i})   
  64.     hold on;   
  65. end   
  66. title(‘(c). Average Embedding (TF)’)   
  67. set(gca,’xtick’,[]);   
  68. set(gca,’ytick’,[]);   
  69. % box off;   
  70. % axis off;   
  71. subplot(2,2,4)   
  72. for i=subNum4:-1:1   
  73.     if length(xdata4{i})==1   
  74.         break;   
  75.     end   
  76.     lineH(subNum4-i+1) = plot(xdata4{i},ydata4{i},‘.’,’color’,color4{i});   
  77.     hold on;   
  78. end   
  79. title(‘(d). STCC’)   
  80. set(gca,’xtick’,[]);   
  81. set(gca,’ytick’,[]);   
  82. % box off;   
  83. % axis off;   
  84. hL=legend(lineH,{’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′});   
  85. newPosition = [0.4 0.4 0.2 0.2];   
  86. newUnits = ’normalized’;   
  87. set(hL,’Position’, newPosition,’Units’, newUnits);   

合並成單幅圖像之后要做的另外一件美觀的事情就是調整間距了。。。

可參考http://blog.sina.com.cn/s/blog_7e18707801017pin.html,具體操作如下:
1. 代碼實現:
figure(‘Name’,'默認’);
subplot(2,2,1);
subplot(2,2,2);
subplot(2,2,3);
subplot(2,2,4);

figure(‘Name’,'緊湊’);
subplot(‘Position’,[0.02 0.65 0.3 0.3]);
subplot(‘Position’,[0.35 0.65 0.3 0.3]);
subplot(‘Position’,[0.02 0.3 0.3 0.3]);
subplot(‘Position’,[0.35 0.3 0.3 0.3]);
subplot(‘Position’,[left bottom width height]) creates an axes at the position specified by a four-element vector. left, bottom, width, and height are in normalized coordinates in the range from 0.0 to 1.
在由四個歸一化坐標規定的位置上建立坐標軸。

src: http://www.ilovematlab.cn/forum.php?mod=viewthread&action=printable&tid=93345

2. 手動調整:

在圖上的工具欄中點Tools,Align Distribute Tool,自己設定間距。

注意:1)需要先選中兩幅圖片,再調整間距;2)一定要用‘shift+click’選中待調整的兩幅圖片,不可以直接點

其實方式1 是一種非常贊的 版面設計方法,為了能夠更加清楚明了的理解 那四個參數,[left,bottom,width,height]是什么意思,我畫了一張圖給大家,應該可以一目了然:

其中,第一幅圖的參數為[0.02, 0.65, 0.3, 0.3]

 

from: http://jacoxu.com/?p=1595


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM