使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用。

1、例子-包含了常用绘图命令

  1. clear
  2. clc
  3.  
  4. %%数据准备
  5. x = 0:0.05:1;
  6. y = -x.*log(x);
  7. figure(1);%图像1
  8. set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色
  9.  
  10. %%绘制曲线
  11. plot(x,y,'rs-','LineWidth',2,'MarkerEdgeColor','k',...
  12. 'MarkerFaceColor','g',...
  13. 'MarkerSize',10);
  14.  
  15. %%在最大值位置添加文本
  16. xe = 1/exp(1);
  17. ye = -xe*log(xe);
  18. hold on;
  19. plot(xe,ye,'pb', 'MarkerSize', 15,'MarkerEdgeColor','k','MarkerFaceColor','m');
  20. text(xe-0.02,ye+0.03,['最大值点(',num2str(xe,3),',',num2str(ye,3),')'],...
  21. 'FontSize',12, 'Color',[0.9 0.1 0.5], 'FontWeight','bold');
  22.  
  23. %%设置标题
  24. title('函数y = xlogx','Color','k','FontSize',30);
  25.  
  26. %%坐标轴标题设置
  27. xlabel('xlogx','Color','k','FontSize',20);%横轴标题
  28. ylabel('y','Color','k','FontSize',20);%纵轴标题
  29.  
  30. %%坐标轴刻度设置
  31. set(gca, 'ytick',x,'yticklabel',x,'xtick',x,...
  32. 'xticklabel',x, 'color',[0.8 0.9 0.9],...
  33. 'FontSize',10); %xtick就是你要在哪些地方显示刻度,xticklabel就是显示什么内容
  34.  
  35. %%坐标轴显示范围设置
  36. axis equal %强制坐标轴尺度相同,这个放在前面或者后面效果会不一样
  37. xlim([0 1]);%x轴范围
  38. ylim([0 0.5]);%y轴范围
  39.  
  40. %%设置Legend
  41. hleg = legend('y=xlogx','Location','SouthWest');%本身不能设置字体的大小,需要通过set进行设置
  42. set(hleg,'FontSize', 15, 'FontAngle','italic','FontWeight','bold',...
  43. 'TextColor',[.6,.2,.1],'Color',[1,1,1]);%Color为设置坐标的背景颜色
  44.  
  45. %%网格设置
  46. % grid on;%最简单的方式
  47. % set(gca,'XMinorGrid','on','YMinorGrid');%设置最小网格,可以只设置其中的一种
  48. set(gca,'XGrid','on','YGrid','on');%设置大网格,可以只设置其中的一种
  49.  
  50. %%全屏显示figure
  51. scrsz = get(0,'ScreenSize');
  52. set(gcf,'Position',scrsz);
  53.  
  54. %%保存图像
  55. set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
  56. filename = 'xlogx';
  57. %print(1, '-djpeg', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif
  58. saveas(1,filename,'png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法
  59. saveas(1,filename,'fig');%保存成figure文件

  以上代码的效果图如下所示:

2、线型、点标记和颜色

Matlab绘制曲线,主要包含三类属性,分别是曲线的类型,点标记及其颜色。默认下通过这三种符号的组合形成一个字符串来表现曲线。搭配的形式为:

‘线型+颜色+标记点’,例如'-r+'表示曲线为实直线,红颜色,曲线穿插有‘+’的点标记符。如下例子所示:

  1. figure
  2. t = 0:pi/20:2*pi;
  3. plot(t,sin(t),'-.r*');
  4. hold on
  5. plot(t,sin(t-pi/2),'--mo');
  6. plot(t,sin(t-pi),':bs');
  7. hold off

效果如下图所示:

下面给出了一些常用的线型,点标记和颜色类型

线型 颜色 标识符
指示符 线型 指示符 线型 指示符 线型
'-' 实线(默认) r 红色 '+' 加号
'--' 双划线 g 绿色 'o' 圆圈
':' 虚线 b 蓝色 '*' 型号
'-.' 点划线 c 蓝绿色 '.'
'none' 无线,不显示 m 洋红色 'x' 叉号
    y 黄色 'square' or 's' 正方形
    k 黑色 'diamond' or 'd' 菱形
    w 白色 '^' 朝上三角符号
        'v' 朝上三角符号
        '>' 朝右三角符号
        '<' 朝左三角符号
        pentagram' or 'p' 五角星
        'hexagram' or 'h''' 六角星
        'none' 无标识符(默认)

 

3、多图显示在一个Figure中

需要用到subplot(m,n,p)函数,m表示行数,n表示列数,p表示第p个图,功能为:表示在m行n列的图上绘制第p个子图像;

实现代码如下:

  1. x = :0.1:
  2.  
  3. %图1
  4. y1 = sin(x).*cos(x)./x;
  5. figure();
  6. subplot(,,);%子图1
  7. plot(x,y1,'r');
  8. title('y=sin(x)');
  9. xlabel('x');
  10. ylabel('y');
  11.  
  12. %图2
  13. y2 = cos(x)./x;
  14. figure();
  15. subplot(,,);%子图2
  16. plot(x,y2,'b');
  17. title('y=cos(x)');
  18. xlabel('x');
  19. ylabel('y');
  20.  
  21. %图3
  22. y3 = x.*sin(x);
  23. figure();
  24. subplot(,,);%子图3
  25. plot(x,y3,'k');
  26. title('y=cos(x)');
  27. xlabel('x');
  28. ylabel('y');
  29.  
  30. %图4
  31. y4 = x.*cos(x.^0.5);
  32. figure();
  33. subplot(,,);%子图4
  34. plot(x,y4,'m');
  35. title('y=cos(x)');
  36. xlabel('x');
  37. ylabel('y');
  38.  
  39. %%全屏显示figure
  40. scrsz = get(,'ScreenSize');
  41. set(gcf,'Position',scrsz);
  42. %%设置颜色
  43. set(gcf, 'color',[0.1 0.5 ]);%设置整体图片的背景色
  44. set(, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
  45. saveas(,'result','png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法

效果图如下:

4、句柄,以及gcf,gca和gco三者的区别

  图形句柄的理解

  Matlab和Windows中的句柄类似,Figure是Matlab中最常用的图像对象。假设现在又多个Figures(我们视他们为对象),想对其中某个Figure进行操作,未完成这样的功能,Matlab给每个FIgure都分配了一个不同的ID(是一个数,例如1,2,3,...),而这个ID就是一个句柄。有了这个句柄我们就可以对指定相应的图形窗口,进行相应的操作,如颜色设置,字体设置和线型设置等。下面是一个关于三个图形操Figure作的例子:

  1. clc
  2. close all
  3. %%产生三个句柄
  4. figure(1)%产生一个图形figure,并赋予句柄值为1
  5. figure(2)%产生一个图形figure,并赋予句柄值为2
  6. figure(3)%产生一个图形figure,并赋予句柄值为3
  7.  
  8. %%操作Figure2
  9. %handle = 2;%这是错误的指定方式
  10. handle = figure(2);%获取figure2的句柄
  11. surf(peaks);
  12. title('Figure2','Color','w','FontSize',20);
  13.  
  14. set(handle,'Color',[0,0.5,0.5],'Toolbar','none')
  15. set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
  16.  
  17. %%操作Figure1
  18. handle = figure(1);%获取figure1的句柄
  19. set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
  20. surf(peaks);
  21. title('Figure1','Color','w','FontSize',20);
  22. set(handle,'Color',[0,0.0,0.5],'Toolbar','none')
  23.  
  24. %%操作Figure3
  25. handle = figure(3);%获取figure3的句柄
  26. set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
  27. surf(peaks);
  28. title('Figure3','Color','w','FontSize',20);
  29. set(handle,'Color',[0.5,0.0,0.5], 'Toolbar','none')
  30.  
  31. saveas(1,'','png');
  32. saveas(2,'','png');
  33. saveas(3,'','png');

  结果如下图所示:  

  除了常用的Figure外,Axes也是常用的句柄,还有其他的对象,它们是用以显示图形和用户界面元素的基本元素,但用的较少,下表列出了各种图形对象:

对象 描述
Root 对计算机屏幕最高级的对象
Figure 用来显示图形和用户界面的窗口
Axes 在窗口中显示图形的轴
Uicontrol 用户界面控制。执行一个对用户交互作用的函数。
Uimenu 用户定义窗口菜单
Uicontextmenu 右键单击对象时弹出的菜单
Image 二维像素基础图
Light 影响斑点和表面对象着色的光源
Line 用于诸如plot,plot3,semilogx,等函数的线
Patch 带边缘的填充多边形
Rectangle 二维形状,从矩形到椭圆
Surface 由x-y平面以上的数据值所作图创建的矩阵数据的三维表示
Text 字符串

  gcf,gca和gco

  gcf 返回当前Figure 对象的句柄值,可以操作图形的整体效果,如背景色,图形打印设置等
  gca 返回当前axes 对象的句柄值,可以操作坐标轴的效果,包括了坐标轴的刻度,显示范围,字体大小,字体磅数(普通,加粗),字体方向(斜体,正体)
  gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure 的CurrentObject属性中。

4、参考资料

  [1]. http://blog.sina.com.cn/s/blog_675eb4fd0100tvhp.html

  [2]. http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html

  [3]. http://blog.csdn.net/wguoyong/article/details/6873877

Matlab 常用绘图指令(二维图形)的更多相关文章

  1. matlab绘制二维图形

    常用的二维图形命令: plot:绘制二维图形 loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill:绘制二维多边填充图形 pol ...

  2. 3ds max学习笔记(十五)-- 二维图形的操作

    (二维图形的创建) 1,在命令面板的[新建],单击第二个按钮: 从中选择对象名称,在视图种单击拖动进行创建,特殊:线:摁[shift]限制水平,垂直方向: 2,二维对象参数: 在渲染中启用:显示二维线 ...

  3. 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换

    原文:二维图形的矩阵变换(三)--在WPF中的应用矩阵变换 UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Vis ...

  4. VS2008集成QT的OpenGL开发(实现二维图形的旋转)

    主要是利用Qt中的定时器实现了二维图形的旋转功能: #ifndef QGLTEST_H #define QGLTEST_H #include <QGLWidget> #include &l ...

  5. 通过Matrix进行二维图形仿射变换

    Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...

  6. 二维图形的矩阵变换(二)——WPF中的矩阵变换基础

    原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matr ...

  7. openGL实现二维图形和三维图形

    openGL是一个强大的底层图形库,其命令最初的时候使用C语言实现的.openGL定义了一个图形程序接口,常用于制作处理三维图像,功能强大,调用方便,在图像处理十分受欢迎. 实现图形主要使用的是ope ...

  8. QT 二维图形 原理、发展及应用

    转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分 ...

  9. 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】

    CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...

随机推荐

  1. 去除TFS版本控制

    对于曾经做过TFS版本控制的项目,在版本控制服务不可用的时候,依然会在每次打开项目的时候都提示:当前项目是版本控制的项目,但是当前版本控制不可用,balabala的信息,如果是需要进行版本控制的项目在 ...

  2. 大数据系列之数据仓库Hive原理

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  3. Vue 3.0 的生命周期

    new Vue() new一个vue实例化对象 init Event & Lifecycle 执行一些初始化和生命周期相关的操作 beforeCreate 组件实例刚刚被创建出来 执行一些初始 ...

  4. vue总结 03过滤器

    过滤器 Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持).过滤器应该被添加在 JavaS ...

  5. 使用os模块实现展示目录下的文件和文件夹

    Windows 10家庭中文版,Python 3.6.4 今天学习了os模块,下面是使用它开发的一个展示目录下的文件和文件夹的函数,代码如下: import os # deep大于等于1的整数,默认为 ...

  6. C语言位域——精妙使用内存

    参考链接  https://blog.csdn.net/yanbober/article/details/8697967  https://blog.csdn.net/Tommy_wxie/artic ...

  7. No.4 selenium学习之路之iframe

    查看iframe: 1.top window ——可以直接进行定位

  8. 洛谷P1177快速排序

    传送门 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  9. Spring整合JDBC以及AOP管理事务

    本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象 ...

  10. 【LOJ】#2340. 「WC2018」州区划分

    题解 学习一个全世界人都会只有我不会的东西 子集变换! 难道我要把这题当板子讲?等等这题好像是板...WC出板题好刺激啊= = 假装我们都做过HAOI2015的FMT题,我们都知道一些FMT怎么解决或 ...