%% Matlab绘图总结1
%% 概述
%%
% 原文地址:
%%
% <http://blog.csdn.net/czyt1988/article/details/38637725>
%
% matlab有着比较强的绘图功能,在进行计算后处理时,使用matlab绘图有着origin等绘图软件无法比拟的优点。但matlab需要比较多的代码编辑,导致许多人宁愿使用origin也不用matlab。
% 实际上,在科学制图领域,matlab并不出众,特别在美化方面,需要比较多的代码(如果需要看看哪个科学绘图适合你可以参考下面这个链接: <http://www.zhihu.com/question/21664179> )
% ,但由于matlab脚本简单易懂,且普及度比较高,因此在学术界目前还是占据着绝大部分的市场。下面专门对matlab的2D,3D绘图进行总结,后面还将介绍如何美化matlab的图形。(PS.你现在看的这篇文章也是用matlab生成的)
% copy一段回答:
%%
%
% * 工科生说Matlab完爆其他
% * 数学系的说Mathematica高贵冷艳
% * 统计系的说R语言作图领域天下无敌
% * 计算机系的说Python低调奢华有内涵
% * 生物狗说Graphpad和Origin脑残都会用``````
% * 外行说EXCEL就够了...
% * 艺术系说你把我画板拿给我......
% * 都会的天下无敌....
%
% 在介绍下面内容的时候,先准备一些数据,下面的绘图都会以这些数据来进行绘制。
clc;
clear all;
close all;
x = 0:0.1:10;
y1 = 2*sin(x)+0.1;
y2 = x.*y1;
y3 = cos(x)./(x+0.1);
y = [y1;y2;y3];
marker_style = {'>';'<';'s';'o';'d';'v';'p';'^';'*';'+';'x';'h'};
line_style = {'-';'--';':';'-.'};
%% 2D绘图plot
% 2d绘图最多的莫过于plot。
%
% 函数格式:plot(x,y) 其中x和y为长度相同坐标向量。
figure
plot(x,y1);
%%
% 方便简单两句搞定,figure用于新建一个绘图窗口,通过这个窗口,可以进行一些设定,plot会自动依附于最近的绘图窗口上。
%
% plot函数有许多重载,第三个参数可以通过文本设置线形和颜色,线形颜色的简单设置可以通过第三个参数完成,复杂的设置可以通过plot第三个参数之后的参数进行指定。
%% 设置标题,xy轴标签及网格
%
% * 给plot添加x轴标签,y轴标签,标题,有些时候为了更清晰明了的监控,还需要显示网格
%
% xlabel,ylabel,title函数分别用于给x轴添加标签,y轴添加标签,及图片标题;如果不需要在里面输入函数及控制粗体斜体什么的,直接输入字符串即可,grid on即可显示网格,若不想显示,
% 可以使用grid off,注意gridon函数需要在plot之后调用,因为grid需要根据坐标轴情况来显示网格,
% 如果在plot之前,grid还不知道坐标轴的分布。具体例子如下:
figure
plot(x,y1);
grid on
xlabel('x轴');
ylabel('y轴');
title('标题');
%%
%
% 但是如果希望在x轴,y轴的标签显示更丰富,这时候就可以使用latex,例如我要在x轴标签上显示公式,可以设置Interpreter属性为LaTex
%
% 具体见下例:
%
figure
plot(x,y1);
grid on
ylabel('$2\sin (x) + 0.1$','Interpreter','LaTex');
title('$\int {x\cos (\sqrt {{x^2}} )} $','Interpreter','LaTex');
xlabel('$\sum {{x^2}} + \int {ydt}$','Interpreter','LaTex');
%% 改变图形窗口背景
% 虽然很方便的画出了图,但大家都不会觉得这幅图好看,灰色的背景,白色的底纹,无论如何也不能放到论文什么的里面,大大的灰色区域让图片和白色的纸张有就像有一层深深的隔阂。
% matlab中,有个功能非常强大的函数set,它可以设置句柄的属性。
% 当前图像的句柄可以直接用gca获取,因此,要改变当前图形窗口的背景只需要如下例中set(gcf,'color','w');即可:
%
figure
set(gcf,'color','w');
plot(x,y1);
grid on
xlabel('x轴');
ylabel('y轴');
title('标题');
%%
% 通过此函数可以控制非常多的属性,gcf是figure生成的窗口的句柄,有三个句柄获取函数是经常使用的:
%%
%
% # gcf返回当前Figure对象的句柄值
% # gca返回当前axes对象的句柄值
% # gco返回当前鼠标单击的句柄值,该对象可以是除root对象外的任意图形对象,并且Matlab会把当前图形对象的句柄值存放在Figure的CurrentObject属性中。
%
% 在绘图里gcf和gca句柄经常用到。
%
% 另外,下面这个函数在出图时经常使用:
%%
%
% set(gcf,'unit','normalized','position',[0.2,0.3,0.4,0.2]);
%
% 此函数的功能是自动调整绘图窗口的大小,上面语句是控制绘图窗口(figure)左下角在屏幕上的显示位置是以(0.2,0.2)为原点(屏幕尺寸的原点也为左下角),窗口长0.4,宽0.2。
% 通过这个函数,能方便统一的生成一个统一尺寸的图,且不用每次都手动调整。上例代码改成如下:
figure
set(gcf,'color','w');
plot(x,y1);
grid on
xlabel('x轴');
ylabel('y轴');
title('标题');
set(gcf,'unit','normalized','position',[0.2,0.2,0.4,0.2]);
%%
% 可以看到,图片的尺寸有明显改变。
%
% 下面开始介绍几个最长用到的设置
%% 绘制多个曲线在一个图上
% 当一个图上有多条曲线时,连续调用两次plot会发现只能显示最后一次调用的结果,若希望多条曲线能都绘制在一个图上,只需要hold on命令即可
figure
set(gcf,'color','w');
plot(x,y1);
hold on
plot(x,y2);
grid on
xlabel('x轴');
ylabel('y轴');
title('标题');
%% 改变线形及标记
% 许多时候,在一张图上绘制多个曲线时,需要给每个线形设置不同的线形和标记,在“概述”的初始化数据代码中,
% marker_style是所有的标记样式,line_style是所有的线形样式。两者组合起来,可以绘制种类繁多的线形
%
figure
set(gcf,'color','w');
x_temp = 1:10;
hold on
for i=1:length(marker_style)
y_temp = ones(1,10);
y_temp = y_temp .* i;
plot_style = strcat('-',marker_style{i,1});
plot(x_temp,y_temp,plot_style);
text(x_temp(end)+0.5,y_temp(end),plot_style);
end
%%
% 上代码中strcat是合并字符串函数,和c语言的一模一样。c里面的字符串操作函数在matlab里都有对应的函数,
% 其中最常用的莫过于格式化函数sprintf,如果使用sprintf,plot_style
% =strcat('-',marker_style{i,1});将写成:
%%
%
% plot_style = sprintf('-%s',marker_style{i,1});
%
%%
% 设置线形及标记有四个属性经常用到分别是:
%%
%
% * LineWidth 设置线宽
% * MarkerEdgeColor 设置标记的边框颜色
% * MarkerFaceColor 设置标记的内部天策颜色
% * MarkerSize 设置标记的尺寸
%
figure
set(gcf,'color','w');
x_temp = 1:10;
hold on
for i=1:length(marker_style)
y_temp = ones(1,10);
y_temp = y_temp .* i;
plot_style = strcat('-',marker_style{i,1});
marker_color = [rand rand rand];%获取一个随机颜色
handel_plot = plot(x_temp,y_temp,plot_style,'LineWidth',2,...
'MarkerEdgeColor',[rand rand rand],...
'MarkerFaceColor',marker_color);
set(handel_plot,'MarkerSize',8);
set(handel_plot,'color',marker_color);%设置线的颜色和marker的颜色一致
text(x_temp(end)+0.5,y_temp(end),plot_style);
end
%%
% 上代码中把plot返回的句柄记录下来,用于设置属性。上例使用了两种方法设置属性,一种是set函数,
% 另外一种是直接在plot的第四个参数开始进行指定名称的设置,在'MarkerFaceColor'之后还可以一直延续下去,
% 不过我更喜欢用set函数进行设置,因为matlab的换行的那三个点实在不喜欢……
figure
set(gcf,'color','w');
x_temp = 1:10;
hold on
for i=1:length(line_style)
y_temp = ones(1,10);
y_temp = y_temp .* i;
handel_plot = plot(x_temp,y_temp,line_style{i,1},'LineWidth',2);
text(x_temp(end)+0.5,y_temp(end),line_style{i,1});
end
ylim([0 5]);
%% 坐标轴(axis)控制
% 有时候,坐标轴并不是我们需要的范围里显示,那么就需要对坐标轴进行设置。
%%
% *axis([xmin xmax ymin ymax zmin zmax])*
%%
% 若没有z轴,可以不用写z轴范围
%
% axis函数可以设置坐标轴显示范围,其调用格式为:
%%
%
% * axis equal:纵、横坐标轴采用等长刻度。
% * axis square:产生正方形坐标系(缺省为矩形)。
% * axis auto:使用缺省设置。
% * axis off:取消坐标轴。
% * axis on:显示坐标轴。
%
% 若想单独设置x轴或y轴范围,可以使用xlim,ylim函数
%%
% *xlim([xmin xmax])*
%%
% *ylim([ymin ymax])*
figure
set(gcf,'color','w');
plot(x,y1);
xlim([2 8]);
ylim([0 3]);
xlabel('x轴');
ylabel('y轴');
title('标题');
%%
% 改变坐标轴显示数值,可以通过改变xtick,ytick属性来实现:
%%
%
% set(gca,'xtick',x_tick);
% set(gca,'ytick',y_tick);
%
% x_tick用于定义需要显示的范围向量,如想x轴从1到10,每隔0.5显示一个,那么x_tick就写成[1:0.5:10],如果1之前还有数据或者10之后还有数据都将不会显示
%
% 改变坐标轴的文字显示可以通过改变XTickLabel,YTickLabel实现:
%%
%
% set(gca,'XTickLabel',x_label);
% set(gca,'YTickLabel',y_label);
%
% x_label,y_label是对应要显示的字符串cell。需要注意的是这个cell的长度需要和上面x_tick的长度对应起来,例如x_tick设置为
%%
%
% [0,1,2,3,4]
%
% 而x_label设置为
%%
%
% {'零','一','二'}
%
% 前面的0,1,2将会替换为'零','一','二',但到后面的“3,4”,没有替换内容时,matlab会自动又从cell的第一个开始,既“3,4”将被替换为'零','一'。
% 看看下面这个例子:
figure
set(gcf,'color','w');
plot(x,y1);
grid on
xlabel('x轴');
ylabel('y轴');
title('标题');
x_tick = [1:2:1
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
原文地址:http://blog.csdn.net/czyt1988/article/details/38637725 包含以下内容源代码,及最新版的publish功能示例。 概述 2D绘图plot 设置标题,xy轴标签及网格 改变图形窗口背景 绘制多个曲线在一个图上 改变线形及标记 坐标轴(axis)控制 图例 legend 双坐标轴图形绘制 - plotyy
资源推荐
资源详情
资源评论
收起资源包目录
matlab2d绘图总结及publish功能示例.rar (18个子文件)
html
summaryOfPlot_07.png 7KB
summaryOfPlot_09.png 4KB
summaryOfPlot_14.png 9KB
summaryOfPlot_06.png 8KB
summaryOfPlot_15.png 10KB
summaryOfPlot_02.png 9KB
summaryOfPlot_13.png 13KB
summaryOfPlot_01.png 6KB
summaryOfPlot.html 57KB
summaryOfPlot_12.png 13KB
summaryOfPlot_04.png 8KB
summaryOfPlot_05.png 6KB
summaryOfPlot.png 3KB
summaryOfPlot_11.png 6KB
summaryOfPlot_03.png 9KB
summaryOfPlot_08.png 8KB
summaryOfPlot_10.png 5KB
summaryOfPlot.m 12KB
共 18 条
- 1
资源评论
尘中远
- 粉丝: 1735
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功