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

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

程序如下:

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

Matlab多个Figure图合成一个Fig的更多相关文章

  1. 使用axes函数在matlab绘图中实现图中图的绘制

    使用axes函数在matlab绘图中实现图中图的绘制 有时为了对细节进行详细说明,需要在一个较大坐标轴上绘制一个小图来对局部进行放大以阐述结果. 这可以通过调用axes函数实现. 下面通过绘制 y=1 ...

  2. C# 图片的裁剪,两个图片合成一个图片

    图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary>         /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png  新图1_ne ...

  3. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  4. 使用MATLAB 2019 App Design 工具设计一个 电子日记App

    使用MATLAB 2019 App Design 工具设计一个 电子日记App1.1 前言:由于信号与系统课程需要,因此下载了MATLAB软件,加之对新款的执着追求,通过一些渠道,下载了MATLAB ...

  5. 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用

    因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码  https ...

  6. QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)

    QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...

  7. 010——MATLAB运行错误跳到下一个循环

    (一)MATLAB运行错误跳到下一个循环 :%文件的个数 try %运行的程序放到这里 catch continue%假如上面的没法执行则执行continue,到下个循环 end

  8. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...

  9. Idea创建文件夹自动合成一个

    在idea中创建文件夹时,它们总是自动合成一个,如下图: 文件夹自动折叠真的很影响效率,可能会引发一些不经意的失误 解决方法: 取消这个地方的勾选 这样就可以正常创建文件夹了

随机推荐

  1. elasticsearch查询之term,range,prefix

    荒废了很久的博客园,现在又回来了.233333 最近在研究elasticsearch 日志查询: 1.term:代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇 2.range:主要是对 ...

  2. django构建blog--页面部分(eclipse+pydev)

    本文介绍的是在eclipse+pydev 平台下,利用django 搭建blog的第2部分:页面部分(主要涉及3个部分:模板.视图.URL模式) 篇幅1:创建模板 blog目录下新建一个文件夹:tem ...

  3. apple开发者账号申请

    1.  登陆appleID. 2. 进入 Your Account 3. 在Account Summary 中的MemberShips中选择第一个(界面大概如下) 4.选择后进入下图. 5. yes ...

  4. 0910 noip模拟

    教师节快乐: T1:勇士闯魔塔,是一道很裸的莫队题目,但在老师的催促下,出题人@syq同学修改了第一题,使之成了一道送分题,全暴力水过: T2:第二题是一道预处理+分组背包,考试中,忘了分组背包怎么敲 ...

  5. JavaScript之isNaN()函数讲解

    定义和用法 isNaN() 函数用于检查其参数是否是非数字值. 语法 isNaN(x) 参数 描述 x 必需.要检测的值. 返回值 如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的 ...

  6. Docker学习资料

    官方Docker:https://www.docker.com/ CSDN Docker : http://docker.csdn.net/ Docker中文社区:http://www.docker. ...

  7. Android App集成支付宝

    原地址:http://blog.csdn.net/wenbingoon/article/details/7933078 手机的在线支付,被认为是2012年最看好的功能,我个人认为这也是移动互联网较传统 ...

  8. Sqli-labs less 64

    Less-64 此处的sql语句为 $sql="SELECT * FROM security.users WHERE id=(($id)) LIMIT 0,1"; 示例payloa ...

  9. POJ 2785

    4 Values whose Sum is 0 Time Limit: 15000MS   Memory Limit: 228000K Total Submissions: 14475   Accep ...

  10. GCD初步认识

    //(1)用异步函数往并发队列中添加任务, //总结:同时开启三个子线程 - (void)test1 { //1.获得全局的并发队列 dispatch_queue_t queue = dispatch ...