zoukankan      html  css  js  c++  java
  • Matlab多个Figure图合成一个Fig

    案例:之前跑过的程序 已经生成了多个matlab图,现在需要进行合并到一个图中。

    解决方案,利用图像句柄把figure图像中的参数读入到内存中,然后重新subplot绘制。

    程序如下:

    Code   ViewCopyPrint
    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

  • 相关阅读:
    迅为i.MX6ULL终结者Linux MISC驱动运行测试
    迅为IMX6Q开发板非设备树uboot-修改默认环境变量
    Android固件编译-迅为3399开发板Android8系统编译
    迅为4412开发板-实验LEDS驱动一
    迅为i.MX6ULL终结者设备树下的Platform驱动运行测试
    迅为i.MX6ULL终结者设备树下的Platform驱动实验程序编写
    项目实战-广域网智能家居-把mosquitto移植到arm上
    迅为-iMX6ULL开发板-设置yocto文件系统开机自启动
    muduo库中的核心:std::bind和std::function
    浅析muduo库中的定时器设施
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5342833.html
Copyright © 2011-2022 走看看