Matlab多个Figure图合成一个Fig
案例:之前跑过的程序 已经生成了多个matlab图,现在需要进行合并到一个图中。
解决方案,利用图像句柄把figure图像中的参数读入到内存中,然后重新subplot绘制。
程序如下:
- clc;clear;
- open(‘./test_1.fig’)
- figure_info=findall(gcf,’type’,'line’);
- xdata1 = get(figure_info,’xdata’);
- ydata1 = get(figure_info,’ydata’);
- color1 = get(figure_info,’color’);
- subNum1 = length(xdata1);
- open(‘./test_2.fig’)
- figure_info=findall(gcf,’type’,'line’);
- xdata2 = get(figure_info,’xdata’);
- ydata2 = get(figure_info,’ydata’);
- color2 = get(figure_info,’color’);
- subNum2 = length(xdata2);
- open(‘./test_3.fig’)
- figure_info=findall(gcf,’type’,'line’);
- xdata3 = get(figure_info,’xdata’);
- ydata3 = get(figure_info,’ydata’);
- color3 = get(figure_info,’color’);
- subNum3 = length(xdata3);
- open(‘./test_4.fig’)
- figure_info=findall(gcf,’type’,'line’);
- xdata4 = get(figure_info,’xdata’);
- ydata4 = get(figure_info,’ydata’);
- color4 = get(figure_info,’color’);
- subNum4 = length(xdata4);
- %%
- subplot(2,2,1)
- for i=subNum1:-1:1
- if length(xdata1{i})==1
- break;
- end
- plot(xdata1{i},ydata1{i},‘.’,’color’,color1{i})
- hold on;
- end
- title(‘(a). K-means (TF-IDF)’)
- set(gca,’xtick’,[]);
- set(gca,’ytick’,[]);
- % box off;
- % axis off;
- subplot(2,2,2)
- for i=subNum2:-1:1
- if length(xdata2{i})==1
- break;
- end
- plot(xdata2{i},ydata2{i},‘.’,’color’,color2{i})
- hold on;
- end
- title(‘(b). Spectral Clustering (best)’)
- set(gca,’xtick’,[]);
- set(gca,’ytick’,[]);
- % box off;
- % axis off;
- subplot(2,2,3)
- for i=subNum3:-1:1
- if length(xdata3{i})==1
- break;
- end
- plot(xdata3{i},ydata3{i},‘.’,’color’,color3{i})
- hold on;
- end
- title(‘(c). Average Embedding (TF)’)
- set(gca,’xtick’,[]);
- set(gca,’ytick’,[]);
- % box off;
- % axis off;
- subplot(2,2,4)
- for i=subNum4:-1:1
- if length(xdata4{i})==1
- break;
- end
- lineH(subNum4-i+1) = plot(xdata4{i},ydata4{i},‘.’,’color’,color4{i});
- hold on;
- end
- title(‘(d). STCC’)
- set(gca,’xtick’,[]);
- set(gca,’ytick’,[]);
- % box off;
- % axis off;
- hL=legend(lineH,{’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′});
- newPosition = [0.4 0.4 0.2 0.2];
- newUnits = ’normalized’;
- 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的更多相关文章
- 使用axes函数在matlab绘图中实现图中图的绘制
使用axes函数在matlab绘图中实现图中图的绘制 有时为了对细节进行详细说明,需要在一个较大坐标轴上绘制一个小图来对局部进行放大以阐述结果. 这可以通过调用axes函数实现. 下面通过绘制 y=1 ...
- C# 图片的裁剪,两个图片合成一个图片
图片的裁剪,两个图片合成一个图片(这是从网上摘的) /// <summary> /// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png 新图1_ne ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- 使用MATLAB 2019 App Design 工具设计一个 电子日记App
使用MATLAB 2019 App Design 工具设计一个 电子日记App1.1 前言:由于信号与系统课程需要,因此下载了MATLAB软件,加之对新款的执着追求,通过一些渠道,下载了MATLAB ...
- 二维码合成,将苹果和安卓(ios和android)合成一个二维码,让用户扫描一个二维码就可以分别下载苹果和安卓的应用
因为公司推广的原因,没有合适的将苹果和安卓(ios和android)合成一个二维码的工具. 因为这个不难,主要是根据浏览器的UA进行判断,所以就自己开发了一个网站 网站名称叫:好推二维码 https ...
- QT模态对话框用法(在UI文件中设置Widget背景图,这个图是一个带阴影边框的图片——酷)
QT弹出模态对话框做法: 1.新建UI文件时,一定要选择基类是QDialog的,我的选择是:Dialog without Buttons(),如下图: 2.然后在使用的时候: MyDialog dlg ...
- 010——MATLAB运行错误跳到下一个循环
(一)MATLAB运行错误跳到下一个循环 :%文件的个数 try %运行的程序放到这里 catch continue%假如上面的没法执行则执行continue,到下个循环 end
- moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.视频合成概述 视频合成,也称为非线性编辑,实际 ...
- Idea创建文件夹自动合成一个
在idea中创建文件夹时,它们总是自动合成一个,如下图: 文件夹自动折叠真的很影响效率,可能会引发一些不经意的失误 解决方法: 取消这个地方的勾选 这样就可以正常创建文件夹了
随机推荐
- Oracle中定义package以及存储过程的使用
使用scott账户下的dept表: select * from dept order by deptno; 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 S ...
- 01.Redis安装
1.安装Redis 1.下载.解压Redis [lizhiwei@localhost Redis]$ ll total 1248 -rwxrwxr-x. 1 lizhiwei lizhiwei 127 ...
- mysql解决错误的方法-MySQL日志
1.使用ps -ef|grep mysql查询是否有与MySQL相关的僵尸进程,如果有则强制杀掉 2.在配置文件my.cnf中配置启动错误日志: log_error = /var/log/mysql/ ...
- C51关键字
C51 中的关键字 关键字 用途 说明 auto 存储种类说明 用以说明局部变量,缺省值为此 break 程序语句 退出最内层循环 case 程序语句 Switch语句中的选择项 char 数据类型说 ...
- 利用 random 与 tertools 模块解决概率问题
Python 中的 random 与 tertools 模块可以得到伪随机数与排列.组合,下面利用这两个模块求解一些有趣的概率问题. 一.random 与 tertools 模块 random 模块常 ...
- Ckeditor 的加载顺序
我们的只用在文件里面引用一个CKEditor的js文件--CKEditor目录下的ckeditor.js文件, 该文件会完成后续的所有的CKEidtor依赖的js文件的加载. 所依赖的js文件加载顺序 ...
- MM1排队系统
#coding=utf-8 import time import random as rd #import math import pylab as pl def simulate(nameda,u) ...
- POJ2451 Uyuw's Concert(半平面交)
题意就是给你很多个半平面,求半平面交出来的凸包的面积. 半平面交有O(n^2)的算法,就是每次用一个新的半平面去切已有的凸包,更新,这个写起来感觉也不是特别好写. 另外一个O(nlogn)的算法是将半 ...
- POJ 1006 Biorhythms (中国剩余定理)
在POJ上有译文(原文右上角),选择语言:简体中文 求解同余方程组:x=ai(mod mi) i=1~r, m1,m2,...,mr互质利用中国剩余定理令M=m1*m2*...*mr,Mi=M/mi因 ...
- 深入浅出ES6(十五):子类 Subclassing
作者 Jason Orendorff github主页 https://github.com/jorendorff 在之前的文章<深入浅出ES6(十三):类 Class>中,我们一起深 ...