文章目录

  • 一、默认matlab绘图
  • 二、预备知识
    • 1、图片位置和大小
    • 2、字体属性设置
    • 3、坐标刻度设置
  • 三、破茧成蝶
  • 四、分图函数
    • 1、保比例
    • 2、横竖边缘相同
    • 3、横竖边缘相同且为50像素
    • 4、任意多个子图

一、默认matlab绘图

figure
x=0:0.001:20;
y1=sin(x);
y2=cos(x);
y3=2*sin(x);
y4=2*cos(x);
subplot(221);plot(x,y1);title('sin');xlabel('x');ylabel('y');
subplot(222);plot(x,y2);title('cos');xlabel('x');ylabel('y');
subplot(223);plot(x,y3);title('2sin');xlabel('x');ylabel('y');
subplot(224);plot(x,y4);title('2cos');xlabel('x');ylabel('y');


对于matlab默认的绘图,有以下几点让笔者不满意的地方

  1. 图标题字体被加粗了
  2. 由于四个图的xlabel和ylabel都一样,想让其只显示一个,换句话说,就是想只显示1、3图的ylabel,只显示2、4图的xlabel。
  3. 在只显示一个xlabel和ylabel的情况下,图与图之间的间距就会显得特别大,想调整一下图的间距。
  4. 图的XTick和YTick划分让笔者不满意,因为曲线将整个图都填满了,显得很拥挤。

基于上述几个问题,初步思路为:

  1. FontWeight调整字体粗细,可选的属性有:
FontWeight 含义
normal 正常
bold 加粗
  1. 不想显示的label用''代替
  2. set(gca,'position',[mag mag1 big big])改变图的大小
  3. set(gca,'XTick',x0,'XTicklabel',x1);,不想显示的用''代替,set(gca,'XLim',[min, max]);改变坐标范围。

二、预备知识

1、图片位置和大小

关于图片位置及大小情况,首先要了解matlab的绘图机制。先来看一个简单例子:

figure
set(gcf,'position',[100 0 800 600]);
subplot(221)
set(gca,'position',[0.05 0.55 0.4 0.4],'xtick',[],'ytick',[],'box','on');

结果如下

  • gcf指向整个figure
  • gca指向subplot之后的子图坐标系
  • set(gcf)单位是像素,set(gca)单位是百分比
  • 存在三个坐标系和两个特征点

2、字体属性设置

字体的常用属性有以下几个:

属性 含义 取值
FontName 字体名称 Arial、Times New Roman,etc.
FontSize 字体大小 10 number,etc.
FontWeight 字体粗细 normal(正常)、bold(加粗)
FontAngle 字体倾斜 italic(意大利斜体)、normal(正常)
set(gca,'FontName','Times New Roman','FontSize',14,'FontWeight','bold','FontAngle','italic' )%设置坐标轴刻度字体名称,大小,加粗 ,斜体;
title('tit','FontWeight','normal');

3、坐标刻度设置

set(gca,'XLim',xl1,'XTick',xt1,'XTicklabel',xtl1);

XLim指的是刻度范围,xl1是一个一行二列的矩阵;XTick指的是标刻度的位置,xt1一般是数值型的;XTicklabel指的是在标刻度的文字内容,xtl1一般是char型的;xt1xtl1需要长度一致,在某个刻度处若不想显示内容,可以用''占位。

三、破茧成蝶

function draw2()
figure
x=0:0.001:20;
y1=sin(x);
y2=cos(x);
y3=2*sin(x);
y4=2*cos(x);
wid=800;
hei=600;
bili=wid/hei;
wid1=0.43;
lefx=1-wid1*2;
lefy=lefx*bili;
hei1=(1-lefy)/2;magx=lefx*8/14;   %margin   x
intx=lefx*3/14;   %interval x
magy=lefy*8/14;   %margin   y
inty=lefy*3/14;   %interval y
magx1=magx+wid1+intx;
magy1=magy+hei1+inty;xt=0:5:10;xtl1=sprintfc('%g',xt);xtl2={'','',''};
yt1=-1:1;ytl1=sprintfc('%g',yt1);ytl3={'','',''};
yt2=-2:2:2;ytl2=sprintfc('%g',yt2);set(gcf,'position',[0 0 wid hei])
subplot(221)
set(gca,'position',[magx magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
plot(x,y1);
set(gca,'XLim',[0, 11]);
set(gca,'YLim',[-1.5, 1.5]);
title('sin','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'YTick',yt1,'YTicklabel',ytl1);
set(gca,'XTick',xt,'XTicklabel',xtl2);
ylabel('y');
subplot(222)
set(gca,'position',[magx1 magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
plot(x,y2);
set(gca,'XLim',[0, 11]);
set(gca,'YLim',[-1.5, 1.5]);
title('cos','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'YTick',yt1,'YTicklabel',ytl3);
set(gca,'XTick',xt,'XTicklabel',xtl2);subplot(223)
plot(x,y3);
set(gca,'XLim',[0, 11]);
set(gca,'YLim',[-3, 3]);
set(gca,'position',[magx magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
title('2sin','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'YTick',yt2,'YTicklabel',ytl2);
set(gca,'XTick',xt,'XTicklabel',xtl1);
xlabel('x');
ylabel('y');
subplot(224)
plot(x,y4);
set(gca,'XLim',[0, 11]);
set(gca,'YLim',[-3, 3]);
set(gca,'position',[magx1 magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
title('2sin','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'YTick',yt2,'YTicklabel',ytl3);
set(gca,'XTick',xt,'XTicklabel',xtl1);
xlabel('x');
end


ps:看起来好像也没有很好看,笔者随便找的例子体现不出效果,其他的数据也许会好看一点。

四、分图函数

关于四子图的情况,笔者编写了两种分图函数,一种分图的思想为:子图比例与大图比例保持相同;另一种分图的思想为:横向边缘与竖向边缘宽度相同。读者可根据自己的需求选取并结合自己的绘图内容加以扩充使用。两种函数如下:

1、保比例

function draw4()
figure
wid=1000;
hei=600;
big=0.43;
lef=1-big*2;
mag=lef*8/14;   %margin
int=lef*3/14;   %interval
mag1=mag+big+int;
set(gcf,'position',[0 0 wid hei])
subplot(221)
title('GPS-IF','FontSize',10,'FontName','Arial','FontWeight','normal');set(gca,'position',[mag mag1 big big],'xtick',[],'ytick',[],'box','on')
subplot(222)
set(gca,'position',[mag1 mag1 big big],'xtick',[],'ytick',[],'box','on')
subplot(223)
set(gca,'position',[mag mag big big],'xtick',[],'ytick',[],'box','on')
subplot(224)
title('GPS-IF','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'position',[mag1 mag big big],'xtick',[],'ytick',[],'box','on')
end

2、横竖边缘相同

function draw3()
figure
wid=1000;
hei=600;
bili=wid/hei;
wid1=0.43;
lefx=1-wid1*2;
lefy=lefx*bili;
hei1=(1-lefy)/2;magx=lefx*8/14;   %margin   x
intx=lefx*3/14;   %interval x
magy=lefy*8/14;   %margin   y
inty=lefy*3/14;   %interval y
magx1=magx+wid1+intx;
magy1=magy+hei1+inty;set(gcf,'position',[0 0 wid hei])
subplot(221)
title('GPS-IF','FontSize',10,'FontName','Arial','FontWeight','normal');set(gca,'position',[magx magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
subplot(222)
set(gca,'position',[magx1 magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
subplot(223)
set(gca,'position',[magx magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
subplot(224)
title('GPS-IF','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'position',[magx1 magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
end

3、横竖边缘相同且为50像素

function draw3()
figure
a=2;b=2;
wid=1000;hei=600;
pmag=50;  %the size of margin pix
marx(1:b+1,1)=3;marx(1)=8;
mary(1:a+1,1)=3;mary(1)=8;
sumx=sum(marx);sumy=sum(mary);
marx=marx./sumx;mary=mary./sumy;
lefy=pmag/hei/mary(1);
lefx=pmag/wid/marx(1);
wid1=(1-lefx)/b;
hei1=(1-lefy)/a;magx=lefx*8/14;   %margin   x
intx=lefx*3/14;   %interval x
magy=lefy*8/14;   %margin   y
inty=lefy*3/14;   %interval y
magx1=magx+wid1+intx;
magy1=magy+hei1+inty;xt=0:0.5:1;xtl1=sprintfc('%g',xt);xtl2={'','',''};
yt1=0:0.5:1;ytl1=sprintfc('%g',yt1);ytl3={'','',''};
yt2=-2:2:2;ytl2=sprintfc('%g',yt2);set(gcf,'position',[0 0 wid hei])
subplot(221)
set(gca,'position',[magx magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
title('TiT1','FontSize',10,'FontName','Arial','FontWeight','normal');
set(gca,'Ylim',[0 1],'YTick',yt1,'YTicklabel',ytl1);
ylabel('Ylab');subplot(222)
set(gca,'position',[magx1 magy1 wid1 hei1],'xtick',[],'ytick',[],'box','on')
subplot(223)
set(gca,'position',[magx magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
subplot(224)
set(gca,'position',[magx1 magy wid1 hei1],'xtick',[],'ytick',[],'box','on')
title('GPS-IF','FontSize',10,'FontName','Arial','FontWeight','normal');
end

4、任意多个子图

此函数可绘制任意多个子,依据以下标准绘制

  • 边缘像素为50
  • 边缘与间隙比为8:3
  • 横竖间隙比为1:1
% main draw
function draw5(wid,hei,a,b)
figure
pmag=50;  %the size of margin pix
marx(1:b+1,1)=3;marx(1)=8;
mary(1:a+1,1)=3;mary(1)=8;
sumx=sum(marx);sumy=sum(mary);
marx=marx./sumx;mary=mary./sumy;
lefy=pmag/hei/mary(1);
lefx=pmag/wid/marx(1);
marx=marx.*lefx;
mary=mary.*lefy;
wid1=(1-lefx)/b;
hei1=(1-lefy)/a;xt=0:0.5:1;xtl1=sprintfc('%g',xt);xtl2=kcell(size(xtl1));xl=[0 1];
yt1=0:0.5:1;ytl1=sprintfc('%g',yt1);ytl2=kcell(size(ytl1));yl=[0 1];set(gcf,'position',[0 0 wid hei])
for i=1:amagy=(a-i)*hei1+sum(mary(1:end-i));for j=1:bmagx=(j-1)*wid1+sum(marx(1:j));n=(i-1)*b+j;subplot(a,b,n);set(gca,'position',[magx magy wid1 hei1],'box','on');% plot here!set(gca,'XLim',xl,'XTick',xt,'XTicklabel',xtl2);set(gca,'YLim',yl,'YTick',yt1,'YTicklabel',ytl2);if j==1ylabel('Ylab');set(gca,'YTick',yt1,'YTicklabel',ytl1);endif i==axlabel('Xlab');set(gca,'XTick',xt,'XTicklabel',xtl1);endend
end
end
% get a null cell which is a*b dims
function data=kcell(m)
a=m(1);b=m(2);
data=cell(a,b);
for i=1:afor j=1:bdata(i,j)=cellstr(num2str(data{i,j}));end
end
end

注意:

  • 代码中for j=1:b改为for j=b:-1:1可提高b的限度。
  • 这个代码版本是横着画的,也可以竖着画,要竖着画需将for i=1:afor j=1:b交换位置,并且相应的magymagx两行代码也要交换位置。


    在宽和高一定的情况下,a和b的取值是有限度的,超过这个限度就会可能出现这种情况:

Matlab 让多图排版更美观相关推荐

  1. matlab disp fprinr,matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)

    matlab中有些计算结果比较长,直接查看有些困难,下面介绍pretty和symdisp函数优化输出结果,使结果更为直观. 演示示例1 有一个计算结果如下: >> f1 f1 = y^5 ...

  2. matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)

    matlab中有些计算结果比较长,直接查看有些困难,下面介绍pretty和symdisp函数优化输出结果,使结果更为直观. 演示示例1 有一个计算结果如下: >> f1f1 =y^5 + ...

  3. matlab pretty什么用,matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)...

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x & t7 n0 d: a# m0 O( y- Lmatlab中有些计算结果比较长,直接查看有些困难,下面介绍pre ...

  4. html显示多张照片的布局,多图片如何排版?手把手教你多图排版布局

    确实,当我们遇到很多图片时,总是容易被排版困住,不知道该如何更好的处理图片布局 不要慌,稿叔今天就和大伙分享我在排版时经常参考的案例,同时还有5个关于排版的技巧以及多图排版神器一并送上,希望能够帮助到 ...

  5. 用python画漂亮图-零基础用 Python 画图表,让你的论文更美观

    曾经我在高中的时候有一篇数学探索的小作业,其中我需要画出一张比较复杂的函数图.由于 X 和 Y 的坐标轴标签都需要一定的自定义,所以微软 Office 自带的画图工具自然无法满足我的要求.经过一段时间 ...

  6. matlab中等高图_高图– jQuery的更深入实践

    matlab中等高图 Highcharts – deeper practice for real statistics Everyone of us can face with a situation ...

  7. MATLAB导出矢量图结合Visio或Adobe illustrator处理图片

    来源 使用matlab完成绘图后,希望直接导出矢量图供写作,而不是PNG等位图. 有些论文对图的数量还有限制,有时需要将多个图进行合并.虽然可以直接使用matlab,latex等进行合并,但感觉这两种 ...

  8. Matlab画三维图的一些技巧

    引言 本人是一位数学科研工作者,平时的文章采用的是latex编写,里面图形的生成主要来自于Matlab(个人对Matlab非常喜欢,感觉上手比较容易,更亲民).对于图形的处理比较频繁,而且总会有一些特 ...

  9. thinkphp5 图片压缩旋转_PPT图片超多,如何让排版更精致?

    hello,大家好,之前有一位粉丝朋友问我:"多张图片的PPT到底该如何排版,有什么小妙招没?" 所以,今天,我们就来聊聊PPT中多图排版的问题?通常情况下,遇到多张图片,我们习惯 ...

  10. [html] 当img标签中的src图片加载失败时,怎么让它变得更美观呢?

    [html] 当img标签中的src图片加载失败时,怎么让它变得更美观呢? 当默认图也失效,就会陷入死循环,需加变量计数,如果是 vue 的话用 @error.once 更妙.在 onerror 给元 ...

最新文章

  1. 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
  2. SAP PP常用表(重要)
  3. 感染性的木马病毒分析之样本KWSUpreport.exe
  4. 什么是无头电商 - headless commerce
  5. 批量上传插件(flash,html5,jquery)
  6. SQL select查询原理--查询语句执行原则转
  7. AI一体机高速自由流收费稽核解决方案
  8. 微信开发原理 公众平台开发模式的数据交互方式
  9. H3C使用ping命令
  10. TensorFlow精进之路(十五):深度神经网络简介
  11. 14. Controller
  12. JQuery 实现表格数据行上移与下移效果
  13. 【路径规划】基于matlab动态多群粒子群算法局部搜索路径规划【含Matlab源码 448期】
  14. msm 8953 camera 流程
  15. facade设计模式学习(作者:KiddLee 来源:博客园  酷勤网收集 2007-09-03)
  16. MSSQL 负载均衡(Moebius)
  17. zabbix5.0-06-报警媒介
  18. Android手机app的adb命令测试电量
  19. PROFINET分布式I/O总线模块的优势有哪些?
  20. 【Linux】好玩的Linux命令(二)

热门文章

  1. (专升本)信息安全(应用安全策略、网络安全策略)
  2. 基于Python的海贼王知识图谱构建设计
  3. 解析ipa生成plist文件
  4. python5_学习python5面向
  5. 2014年值得关注的10个开源项目 下
  6. rogabet notepad 浏览器调用
  7. 酷狗音乐QQ显示(VC源码)
  8. flea-cache使用之Redis集群模式接入
  9. javaspringboot面试,挑战华为社招
  10. sum在mysql是什么意思_数据库中Count是什么意思和SUM有什么区别