Matlab 常用绘图指令(二维图形)
使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用。
1、例子-包含了常用绘图命令
clear
clc %%数据准备
x = 0:0.05:1;
y = -x.*log(x);
figure(1);%图像1
set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色 %%绘制曲线
plot(x,y,'rs-','LineWidth',2,'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10); %%在最大值位置添加文本
xe = 1/exp(1);
ye = -xe*log(xe);
hold on;
plot(xe,ye,'pb', 'MarkerSize', 15,'MarkerEdgeColor','k','MarkerFaceColor','m');
text(xe-0.02,ye+0.03,['最大值点(',num2str(xe,3),',',num2str(ye,3),')'],...
'FontSize',12, 'Color',[0.9 0.1 0.5], 'FontWeight','bold'); %%设置标题
title('函数y = xlogx','Color','k','FontSize',30); %%坐标轴标题设置
xlabel('xlogx','Color','k','FontSize',20);%横轴标题
ylabel('y','Color','k','FontSize',20);%纵轴标题 %%坐标轴刻度设置
set(gca, 'ytick',x,'yticklabel',x,'xtick',x,...
'xticklabel',x, 'color',[0.8 0.9 0.9],...
'FontSize',10); %xtick就是你要在哪些地方显示刻度,xticklabel就是显示什么内容 %%坐标轴显示范围设置
axis equal %强制坐标轴尺度相同,这个放在前面或者后面效果会不一样
xlim([0 1]);%x轴范围
ylim([0 0.5]);%y轴范围 %%设置Legend
hleg = legend('y=xlogx','Location','SouthWest');%本身不能设置字体的大小,需要通过set进行设置
set(hleg,'FontSize', 15, 'FontAngle','italic','FontWeight','bold',...
'TextColor',[.6,.2,.1],'Color',[1,1,1]);%Color为设置坐标的背景颜色 %%网格设置
% grid on;%最简单的方式
% set(gca,'XMinorGrid','on','YMinorGrid');%设置最小网格,可以只设置其中的一种
set(gca,'XGrid','on','YGrid','on');%设置大网格,可以只设置其中的一种 %%全屏显示figure
scrsz = get(0,'ScreenSize');
set(gcf,'Position',scrsz); %%保存图像
set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
filename = 'xlogx';
%print(1, '-djpeg', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif
saveas(1,filename,'png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法
saveas(1,filename,'fig');%保存成figure文件
以上代码的效果图如下所示:
2、线型、点标记和颜色
Matlab绘制曲线,主要包含三类属性,分别是曲线的类型,点标记及其颜色。默认下通过这三种符号的组合形成一个字符串来表现曲线。搭配的形式为:
‘线型+颜色+标记点’,例如'-r+'表示曲线为实直线,红颜色,曲线穿插有‘+’的点标记符。如下例子所示:
figure
t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*');
hold on
plot(t,sin(t-pi/2),'--mo');
plot(t,sin(t-pi),':bs');
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个子图像;
实现代码如下:
x = :0.1: %图1
y1 = sin(x).*cos(x)./x;
figure();
subplot(,,);%子图1
plot(x,y1,'r');
title('y=sin(x)');
xlabel('x');
ylabel('y'); %图2
y2 = cos(x)./x;
figure();
subplot(,,);%子图2
plot(x,y2,'b');
title('y=cos(x)');
xlabel('x');
ylabel('y'); %图3
y3 = x.*sin(x);
figure();
subplot(,,);%子图3
plot(x,y3,'k');
title('y=cos(x)');
xlabel('x');
ylabel('y'); %图4
y4 = x.*cos(x.^0.5);
figure();
subplot(,,);%子图4
plot(x,y4,'m');
title('y=cos(x)');
xlabel('x');
ylabel('y'); %%全屏显示figure
scrsz = get(,'ScreenSize');
set(gcf,'Position',scrsz);
%%设置颜色
set(gcf, 'color',[0.1 0.5 ]);%设置整体图片的背景色
set(, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
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作的例子:
clc
close all
%%产生三个句柄
figure(1)%产生一个图形figure,并赋予句柄值为1
figure(2)%产生一个图形figure,并赋予句柄值为2
figure(3)%产生一个图形figure,并赋予句柄值为3 %%操作Figure2
%handle = 2;%这是错误的指定方式
handle = figure(2);%获取figure2的句柄
surf(peaks);
title('Figure2','Color','w','FontSize',20); set(handle,'Color',[0,0.5,0.5],'Toolbar','none')
set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on %%操作Figure1
handle = figure(1);%获取figure1的句柄
set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
surf(peaks);
title('Figure1','Color','w','FontSize',20);
set(handle,'Color',[0,0.0,0.5],'Toolbar','none') %%操作Figure3
handle = figure(3);%获取figure3的句柄
set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
surf(peaks);
title('Figure3','Color','w','FontSize',20);
set(handle,'Color',[0.5,0.0,0.5], 'Toolbar','none') saveas(1,'','png');
saveas(2,'','png');
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 常用绘图指令(二维图形)的更多相关文章
- matlab绘制二维图形
常用的二维图形命令: plot:绘制二维图形 loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill:绘制二维多边填充图形 pol ...
- 3ds max学习笔记(十五)-- 二维图形的操作
(二维图形的创建) 1,在命令面板的[新建],单击第二个按钮: 从中选择对象名称,在视图种单击拖动进行创建,特殊:线:摁[shift]限制水平,垂直方向: 2,二维对象参数: 在渲染中启用:显示二维线 ...
- 二维图形的矩阵变换(三)——在WPF中的应用矩阵变换
原文:二维图形的矩阵变换(三)--在WPF中的应用矩阵变换 UIElement和RenderTransform 首先,我们来看看什么样的对象可以进行变换.在WPF中,用于呈现给用户的对象的基类为Vis ...
- VS2008集成QT的OpenGL开发(实现二维图形的旋转)
主要是利用Qt中的定时器实现了二维图形的旋转功能: #ifndef QGLTEST_H #define QGLTEST_H #include <QGLWidget> #include &l ...
- 通过Matrix进行二维图形仿射变换
Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...
- 二维图形的矩阵变换(二)——WPF中的矩阵变换基础
原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matr ...
- openGL实现二维图形和三维图形
openGL是一个强大的底层图形库,其命令最初的时候使用C语言实现的.openGL定义了一个图形程序接口,常用于制作处理三维图像,功能强大,调用方便,在图像处理十分受欢迎. 实现图形主要使用的是ope ...
- QT 二维图形 原理、发展及应用
转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分 ...
- 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】
CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...
随机推荐
- 栈应用之 括号匹配问题(Python 版)
栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出 ...
- java基础39 增强for循环(也叫foreach循环)
增强for循环是jdk1.5出现的新功能 1.增强for循环的作用 简化了迭代器的书写格式(注意:增强for循环底层还是使用了迭代器遍历) 2.增强for循环的格式 for(数据类型 变量名:遍历的目 ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- OutLook中添加Exchange失败问题
问题: 在邮件中添加账户后,打开outlook时报出错误:无法启动 Microsoft Outlook. 无法打开 Outlook 窗口. 无法打开此文件夹集合. 必须先使用当前的配置文件连接到 Mi ...
- mvc的cshtml Request取不到值
如果路径为:http://localhost:2317/food/1,这时用Request["id"]是取不到值的应该用: Request.RequestContext.Route ...
- C#设置窗体中的窗体随主窗体大小变化而变化
form2 f=new form2(); f.Size=this.Size; f.Location=this.Location; f.showdialog(); 作者:耑新新,发布于 博客园 转载请 ...
- bzoj 1820 dp
最普通dp要4维,因为肯定有一个在上一个的位置,所以可以变为3维,然后滚动数组优化一下. #include<bits/stdc++.h> #define LL long long #def ...
- bzoj 1232 [Usaco2008Nov]安慰奶牛cheer
思路:看出跟dfs的顺序有关就很好写了, 对于一棵树来说确定了起点那么访问点的顺序就是dfs序,每个点经过 其度数遍,每条边经过2边, 那么我们将边的权值×2加上两端点的权值跑最小生成树,最后加上一个 ...
- logstash部署及基本语法(二)
一.logstash介绍 Logstash是一个开源的数据收集引擎,可以水平伸缩,而且logstash是整个ELK当中拥有最多插件的一个组件,其可以接收来自不同源的数据并统一输入到指定的且可以是不同目 ...
- HTML5 Canvas游戏开发(三)lufylegend开源库件(上)
lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...