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

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

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容