matlab绘图基础程序

之前自己编写了一个很大的程序用来画图,为了方便修改,努力将需要改的参数都放在了一起,但是,这个程序很不稳定,时常在维度上出问题,有时为了修改问题要花的时间比直接编写一个还要多,所以,想了一下,就把基础的画图程序记下来,到时候直接编的时候方便查找。

1. 二维曲线

1.1 曲线图

同一个坐标系里画多条曲线
plot(x,y1,x,y2,x,y3...)

双纵坐标函数
plotyy(x1,y1,x2,y2)

%分别画左右两个坐标轴

yyaxis left                          %左侧坐标轴

xlabel('时间/ms');

a4=bar(time,Xneg4,'stack');             %堆叠图

b4=bar(time,Xpos4,'stack');

axis([-2 50 -0.7 0.7]);                 %设置左侧坐标轴范围

set(gca,'XTick',[-2:6:50]);

set(gca,'YTick',[-0.7:0.2:0.7],'YColor','k');

yyaxis right                          %右侧坐标轴

ylabel('故障电流/kA');                      

title('换流站4')

c41=plot(time,Idc14,'-r','LineWidth',1.4); %画第二坐标系的Idc                    

c42=plot(time,Idc24, '--r','LineWidth',1.4);

axis([-2 50 -35 35]);                 %右侧坐标轴范围

set(gca,'YTick',[-35:10:35],'YColor','k');

参数设置


Matlab绘图参数.png

(图片来自互联网,侵删)


线条属性.png

(图片来自互联网,侵删)

1.2 条形图

bar(x,y,选项)
bar(time,Xneg3,'stack'); %堆叠柱形图

set(a4(1),'FaceColor',[0.266666666666667 0.447058824 
0.768627451],'edgecolor','none')         %设置堆叠柱形图里的颜色
%set(gca,'edgecolor','none')设置柱形的边框无颜色

1.3 阶梯图

stairs(x,y,选项)

1.4 杆图

stem(x,y,选项)

1.5 填充图

fill(x1,y1,选项1,x2,y2,选项2,...)

1.6 极坐标图

ploar(theta,rho,选项)
theta极坐标极角,rho为极径

1.7 对数极坐标图

semilogx(x1,y1,选项1,x2,y2,选项2,…)
semilogy(x1,y1,选项1,x2,y2,选项2,…)
loglog(x1,y1,选项1,x2,y2,选项2,…)这些函数中选项的定义和plot函数全然一样,所不同的是坐标轴的选取。semilogx函数使用半对数坐标,x轴为常常使用对数刻度,而y轴仍保持线性刻度。semilogy恰好和semilogx相反。loglog函数使用全对数坐标,x、y轴均采用对数刻度。

1.8 等高线图

contour(x,y)


2. 三维图

2.1 三维曲线

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…)

2.2 三维网格

mesh(x,y,z,c)

带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz,其使用方法和mesh类似。不同的是,meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。

2.3 三维曲面

surf(x,y,z,c)

具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl

普通情况下,x,y,z是维数同样的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。c省略时,Matlab觉得c=z,也即颜色的设定是正比于图形的高度的。这样就能够得到层次分明的三维图形。当x,y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲线。

标准三维曲面

sphere函数和cylinder函数分别用于绘制三维球面和柱面。sphere函数的调用格式为:[x,y,z]=sphere(n);

cylinder函数的调用格式为:[x,y,z]=cylinder(R,n)

2.4 其他的三维图

bar3(x,y)
stem3(x,y,z)
pie3(x)
fill3(x,y,z,c)
瀑布图
waterfall(x,y,z)
等高线图
contour3(x,y,z)


3. 辅助操作

3.1 坐标轴

axis([xmin xmax ymin ymax zmin zmax])

axis函数的功能丰富,其常常使用的使用方法有:axis equal :纵横坐标轴採用等长刻度
axis square:产生正方形坐标系(默觉得矩形)axis auto:使用默认设置axis off:取消坐标轴axis on :显示坐标轴
还有:给坐标加网格线能够用grid命令来控制,grid on/off命令控制画还是不画网格线,不带參数的grid命令在两种之间进行切换。给坐标加边框用box命令控制。

坐标轴刻度值设置
set(gca,'XTick',[-2:6:50]);

3.2 图形保持

hold on; hold off

3.3 在坐标点处添加图形说明

text(x,y,'图形说明'),其中(x,y)是坐标点

3.4 图题

title('图形名称')

3.5 坐标轴名称

xlabel('x轴说明')
ylabel('y轴说明')

3.6 图例

legend('图例1','图例2',...)

'Best' 图标标识放在图框内不与图冲突的最佳位置
'North' 图例标识放在图顶端
'South' 图例标识放在图底端
'East' 图例标识放在图右方
'West' 图例标识放在图左方
'NorthEast' 图例标识放在图右上方(默认)
'NorthWest’ 图例标识放在图左上方
'SouthEast' 图例标识放在图右下角
'SouthWest' 图例标识放在图左下角
(以上几个都是将图例标识放在框图内)

'BestOutside' 图标标识放在图框外使用最小空间的最佳位置
'NorthOutside' 图例标识放在图框外侧上方
'SouthOutside' 图例标识放在图框外侧下方
'EastOutside' 图例标识放在图框外侧右方
'WestOutside' 图例标识放在图框外侧左方
'NorthEastOutside' 图例标识放在图框外侧右上方
'NorthWestOutside' 图例标识放在图框外侧左上方
'SouthEastOutside' 图例标识放在图框外侧右下方
'SouthWestOutside' 图例标识放在图框外侧左下方
(以上几个将图例标识放在框图外)

3.7 三维图视角处理

view(az,el)
az是方位角,el是仰角
例如,view(-37.5,30);

3.8 图形裁剪

Matlab定义的NaN常数能够用于表示那些不可使用的数据,利用这些特性,能够将图形中须要裁剪部分相应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。

3.9 画子图

四格子图.png

h=subplot(m,n,p)
m代表行,n代表列,p代表的这个图形花在第几行,第几列

%可以直接生成四格子图
x=1:0.1:5;
y1=x.*x;
y2=x.*x;
y3=x.*x;
y4=x.*x;
set(gcf,'position',[350 170 850 540])
subplot(2,2,1)
plot(x,y1)
set(gca,'position',[0.11,0.6,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,2)
plot(x,y2)
set(gca,'position',[0.58,0.6,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,3)
plot(x,y3)
set(gca,'position',[0.11,0.13,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
subplot(2,2,4)
a4=plot(x,y4)
set(gca,'position',[0.58,0.13,0.35,0.34],'FontSize',12)
xlabel('time/s')
ylabel('I/kA')
legend(a4,'y','Location',[0.13,0.02,0.79,0.02])

左边的两行合并成一行,组成一个大图
subplot(2,2,[1,3])
plot(t,y1)

subplot(2,2,2)
plot(t,y2)

subplot(2,2,4)
plot(t,y3)

也可以上面的两列合并成一列,组成一个大图
subplot(2,2,1:2)
plot(t,y1)

subplot(2,2,3)
plot(t,y2)

subplot(2,2,4)
plot(t,y3)

图片和子图的位置和尺寸设置

有时自动生成的子图不令人满意,可以通过set(gca,'position',[350 170 850 540])的方式来确定子图的坐标和大小,如何知道子图应该放在哪里合适呢?
方法1 微调法
记住一个常用的坐标,再根据实际情况进行微调。这里整理了2×2矩阵子图的四个坐标。[a,b,c,d]分别是[左下角的横坐标,纵坐标,图片的横轴长度,图片的纵轴长度]

图1:[0.11,0.6,0.35,0.34]

图2:[0.58,0.6,0.35,0.34]

图3:[0.11,0.13,0.35,0.34]

图4:[0.58,0.13,0.35,0.34]

方法2 提取坐标法
如果记不住坐标也没事,其实可以先画出来,调整好之后再用get()提取当前图中的坐标,方法如下:

1.先生成一个figure
2.调整好位置
3.打开鼠标指针,点在子图上
get(gca,'position')
即可得到子图的坐标和大小
之后get(gcf,'position')
即可得到图框的坐标和大小
get(legend,'position')
即可得到图例的坐标和大小
其他的参数设置,也可以在调好后获得,具体可以打开属性编辑器,找到里面的设置项英文单词,在get里面调用即可。

坐标和尺寸设置方法

set(gcf,'position',[350 170 850 540])
%原始的位置[488,342,560,420],具体用多大的可以先跑一下试试,再调整
%习惯用cm作单位的,可以这样设置
set(gcf,'unit','centimeters','position',[350 170 850 540])

3.10 隐函数

ezplot(f)
还有ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc

3.11 保存图片

方法一:保存为.fig文件,方便之后调整

num1=num2str(loop);%这里是为图片起名字,避免覆盖
savefig(strcat('figure','_',num1));%字符串连接

方法二:saveas()保存为设定格式

saveas(gcf, 'test', 'png')
%或者指定路径
saveas(gcf,['D:\figure\work','test','.jpg']);
%放在了D盘下的figure文件夹里的work文件夹里。

方法三:万能的print(),不仅可以设定保存格式,还能设定图片的像素

print(gcf,'-dpng','d.png') %将图片保存成png格式
%或者指定路径
print(gcf,'-djpeg','C:\d.jpeg'); %将图片保存为jpg格式,放在C盘

%print函数可以指定保存图片分辨率
print('-dtiff','-r300',[w,'.tiff']);%[w,'.tiff']是生成一个名称

d表示device,-r300表示像素300dpi,r表示resolution的缩写,300dpi是分辨率数值,一般期刊要求黑白图片600dpi,彩色图片300dpi。

其他类型的:
png格式: '-dpng'和TIFF差不多
jpeg格式: '-djpeg',文件小,较清晰
tiff格式: '-dtiff'图片较清晰,文件大小还行
bmp格式: '-dbitmap'图片清晰,但文件极大
gif格式:'-dgif'文件小但不清晰
emf无损格式:'-dmeta'

方法四:imwrite()
这种方法据说保存图像大小和显示的大小是一样的。

imwrite(gcf, 'test.png');

3.11 设置图片字体大小

set(gca,'FontSize',12)

4. 附录

matlab绘图颜色
也可以用getcolor来获取其他地方的颜色
例如,常用的配色方案

常用数据可视化软件中部分配色方案的RGB值.png

(图片来自互联网,侵删)

各类颜色的RGB值


matlabRGB图形颜色.png

(图片来自互联网,侵删)

你可能感兴趣的:(matlab绘图基础程序)