MATLAB 画图

目录

图形对象属性

坐标轴

散点图

Line 属性

imagesc

histogram 直方图

subplot

图像保存

其他


图形对象属性

set 设置图形对象属性

set(H,Name,Value):为 H 标识的对象指定其 Name 属性的值

p = plot(1:10);
set(p,'Color','red')% 更改特定线条的颜色

gca 当前坐标区或图
设置当前坐标区的字体大小、刻度方向、刻度长度以及 y 坐标轴范围。

ax = gca; % current axes
ax.FontSize = 12;
ax.TickDir = 'out';
ax.TickLength = [0.02 0.02];
ax.YLim = [-2 2];

figure窗口背景的黑白变换

背景的暂时变化,对于新建的figure无效:
set(gcf,'color','white'); (gcf 返回当前Figure 对象的句柄值)

对于新建的figure同样有效:
colordef black(从白色变为黑色背景)
colordef white(从黑色变白色)
colordef none(变为默认值)

以上修改,你会发现一旦关了Matlab再开启,所有的设置又会变回去,不能永久保存。如果需要永久改变,可以用这个命令:reset(groot)

坐标轴

title :添加标题
在标题中可以包含变量的值,例如:

figure
plot((1:10).^2)
f = 70;
c = (f-32)/1.8;
title(['Temperature is ',num2str(c),' C'])

xlim([xl xr]);ylim([yl yr]);用于限定x轴 y轴上线限制

坐标轴的显示方式
axis off;% 去掉坐标轴
axis tight;% 紧坐标轴
axis equal;% 等比坐标轴

set(gca,'YDir','reverse') 把y轴反转,Y轴值上面小,下面大

set(gca,'YDir','normal') 回到正常

若要为图形删除边框线,则输入命令:

box off
box on   # 加入框线

散点图

scatter(x,y,sz,c) 
sz:指定圆大小。要绘制大小相等的圆圈,请将 sz 指定为标量。要绘制大小不等的圆,请将 sz 指定为长度等于 x 和 y 的长度的向量。
c:指定圆颜色。要以相同的颜色绘制所有圆圈,请将 c 指定为颜色名称或 RGB 三元组。要使用不同的颜色,请将 c 指定为向量或由 RGB 三元组组成的三列矩阵。

scatter(___,'filled') 
填充圆形。可以将 'filled' 选项与前面语法中的任何输入参数组合一起使用。


Line 属性

线条

Color - 线条颜色

[0 0 0] (默认黑色) | RGB 三元组 | 十六进制颜色代码 | 'r' | 'g' | 'b' | ...

颜色短名称
'r'
绿'g'
'b'
'y'
'k'
'w'
青蓝色'c'

LineStyle - 线型
'-' (默认) | '--' | ':' | '-.' | 'none'

线型说明
'-'实线
'--'虚线
':'点线
'-.'点划线

LineWidth - 线条宽度
0.5 (默认) | 正值
线宽,指定为以磅为单位的正值,其中 1 磅 = 1/72 英寸。如果该线条具有标记,则线条宽度也会影响标记边。

Marker - 标记符号
'none' (默认) | 'o' | '+' | '*' | '.' | ...

说明
'o'圆圈
'+'加号
'*'星号
'.'
's'方形
'd'菱形
'p'五角星
'h'六角星

MarkerIndices - 要显示标记的数据点的索引
1:length(YData) (默认) | 正整数向量 | 正整数标量
要显示标记的数据点的索引,指定为正整数向量。如果不指定索引,MATLAB 将在每个数据点显示一个标记。

 plot(x,y,'-o','MarkerIndices',[1 5 10]) 
 % 在第一、第五和第十个数据点处显示圆形标记。
 plot(x,y,'-x','MarkerIndices',1:3:length(y)) 
 % 每隔三个数据点显示一个交叉标记。
 plot(x,y,'Marker','square','MarkerIndices',5) % 在第五个数据点显示一个正方形标记。


plot 二维线图

plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn) 设置每个线条的线型、标记符号和颜色。您可以混用 X、Y、LineSpec 三元组和 X、Y 对组。指定线型、颜色和标记:

plot(x,y1,'g',x,y2,'b--o',x,y3,'c*')

plot(ax,___)
将在由 ax 指定的坐标区中,而不是在当前坐标区 (gca) 中创建线条。选项 ax 可以位于前面的语法中的任何输入参数组合之前。

ax1 = subplot(2,1,1); % top subplot
x = linspace(0,3);
y1 = sin(5*x);
plot(ax1,x,y1)
title(ax1,'Top Subplot')
ylabel(ax1,'sin(5x)')

ax2 = subplot(2,1,2); % bottom subplot
y2 = sin(15*x);
plot(ax2,x,y2)
title(ax2,'Bottom Subplot')
ylabel(ax2,'sin(15x)')


imagesc

https://www.mathworks.com/help/matlab/ref/imagesc.html#d122e631230

  • imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色
  • imagesc(x,y,A) x,y决定坐标范围,x,y应是两个二维向量,即x=[x1 x2],y=[y1 y2],matlab会在[x1,x2]*[y1,,y2]的范围内染色。
imagesc(___,clims)

clims指定映射到colormap的第一个和最后一个元素的数据值
clims=[cmin-cmax]
其中小于或等于tocminmap的值映射到colormap中的第一种颜色,大于或等于tocmaxmap的值映射到colormap中的最后一种颜色。


histogram 直方图

histogram(X) 基于 X 创建直方图。
histogram 函数使用自动 bin 划分算法,然后返回均匀宽度的 bin,这些 bin 可涵盖 X 中的元素范围并显示分布的基本形状。
histogram 将 bin 显示为矩形,这样每个矩形的高度就表示 bin 中的元素数量。
例如:生成 10,000 个随机数并创建直方图。histogram 函数自动选择合适的 bin 数量,以便涵盖 x 中的值范围并显示基本分布的形状。

x = randn(10000,1);
h = histogram(x)

 

histogram(X,nbins) 使用标量 nbins 指定的 bin 数量。
例如:对分类为 25 个等距 bin 的 1,000 个随机数绘制直方图:

x = randn(1000,1);
nbins = 25;
h = histogram(x,nbins)

 

指定 histogram 函数的输出参数时,它返回一个二元直方图对象。可以使用该对象检查直方图的属性:Histogram 属性

counts = h.Values
counts = 1×25
 ..........

调整直方图属性
通过显式设置 bin 数按精细颗粒级别调整 bin。
h.NumBins = 31;
h.BinEdges = [-3:3];
通过向量指定 bin 边界。向量中的第一个值是第一个 bin 的左边界。最后一个值是最后一个 bin 的右边界。
h.EdgeColor = 'r';

指定直方图的 bin 边界

x = randn(1000,1);
edges = [-10 -2:0.25:2 10];
h = histogram(x,edges);

生成 1,000 个随机数并创建直方图。将 bin 边界指定为向量,使宽 bin 在直方图的两边,以捕获不满足|x|<2 的离群值。第一个向量元素是第一个 bin 的左边界,而最后一个向量元素是最后一个 bin 的右边界。
 
histogram(___,Name,Value) 使用前面的任何语法指定具有一个或多个 Name,Value 对组参数的其他选项。例如:
可以指定 'BinWidth' 和一个标量以调整 bin 的宽度。
或指定 'Normalization' 和一个有效选项('count'、'probability'、'countdensity'、'pdf'、'cumcount' 或 'cdf')以使用不同类型的归一化

histogram(C)(其中 C 为分类数组)通过为 C 中的每个类别绘制一个条形来绘制直方图。
histogram(C,Categories) 仅绘制 Categories 指定的类别的子集。

A = [0 0 1 1 1 0 0 0 0 NaN NaN 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1];
C = categorical(A,[1 0 NaN],{'yes','no','undecided'})
h = histogram(C,'BarWidth',0.5)
% 使用相对条形宽度 0.5 绘制投票的分类直方图。

 

hist()

hist有直方图的意思,直方图也被称为频数直方图,它用来显示数据集的分布情况。

hist(x) 基于向量 x 中的元素创建直方图条形图。x 中的元素有序划分入 x 轴上介于 x 的最小值和最大值间的 10 个等间距 bin 中。hist 将 bin 显示为矩形,这样每个矩形的高度就表示 bin 中的元素数量。

[counts,centers] = hist(___) 返回一个附加行向量 centers,指示 x 轴上每个 bin 中心的位置。
例如:生成 1,000 个随机数。计算 10 个等间距 bin 的每一个中有多少个数字。返回 bin 计数和 bin 中心。

x = randn(1000,1);  
[counts,centers] = hist(x)

counts = 1×10

4 27 88 190 270 243 123 38 13 4

centers = 1×10

-2.8915 -2.2105 -1.5294 -0.8484 -0.1673 0.5137 1.1947 1.8758 2.5568 3.2379
使用 bar 绘制直方图。

bar(centers,counts)

 

subplot

subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。

但用这个方法画出来的图周围会有很大的白边,如果要去除它需要对每一个子图设置准确位置:

subplot('position',[0.05 0.71 0.9 0.25])

图像保存

1、使用imwrite函数

imwrite(img,'result.jpg');
这种方法保存图像大小和显示的大小是一样的。
注意:用imwrite保存的图片只有图片本身,没有其他内容。

将plot/imagesc产生的图片使用imwrite()保存到本地

x = -10:0.1:10; % x赋值
y = x.^2; % y赋值
fig = figure; % 新建一个figure,并将图像句柄保存到fig
plot(x,y,'.') % 用"."的形式将x,y表现在上面生成的图像中
legend({'y=x^2'},'Location','northwest') % 在图像的左上角生成图例
frame = getframe(fig); % 获取frame
img = frame2im(frame); % 将frame变换成imwrite函数可以识别的格式
imwrite(img,'a.png'); % 保存到工作目录下,名字为"a.png"

getframe捕获坐标区或图窗作为影片帧

F = getframe 捕获显示在屏幕上的当前坐标区作为影片帧。
F 是一个包含图像数据的结构体。getframe 按照屏幕上显示的大小捕获这些坐标区它并不捕获坐标区轮廓外部的刻度标签或其他内容。

F = getframe(ax) 捕获 ax 标识的坐标区而非当前坐标区。
F 是一个结构体,其中包含的 cdata 字段中包含捕获的图像数据。
使用 imshow 显示捕获的图像数据

plot(rand(5))
F = getframe;

figure
imshow(F.cdata)
imwrite(frame.cdata,path) %保存图像

F = getframe(fig) 捕获由 fig 标识的图窗。如果您需要捕获图窗窗口的整个内部区域(包括坐标区标题、标签和刻度线),则指定一个图窗。捕获的影片帧不包括图窗菜单和工具栏。

2、saveas命令
saveas函数可以将指定figure中的图像或者simulink中的框图进行保存。saveas的格式为:
saveas(gca, filename, fileformat),其中的三个参数:
(1)gca:图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3;也可以直接用gcf获取当前窗口句柄。
(2)filename:单引号字符串,指定文件名
(3)fileformat:单引号字符串,指定存储格式

saveas(gcf,'save.jpg'); %保存当前窗口的图像
saveas(2,'save.jpg'); %保存Figure 2窗口的图像
saveas(gcf,'C:\Users\jin\Desktop\sinx.jpg') 
% 其中C:\Users\jin\Desktop\是想要保存图形的路径。

saveas保存的结果,有白边。如果想将生成的图片用于后续的图像处理,建议使用imwrite函数,否则,用哪种保存函数都可以。

3、print

打印图窗或保存为特定文件格式

print('-dpng','-r1000','20210317-1902.png')

指定分辨率,将图窗另存为图像文件。【产生位图(质量好坏与分辨率有关),适用于伪彩图。MATLAB直接复制图窗得到矢量图,适用于曲线图】


保存图片并批量命名时,冒号:不能作为命名。

保存自定义的颜色图 color bar

save(filename,variables)

% 保存设置的颜色图
ax = gca;
MyColormap = colormap(ax);
save('MPLNETmap','MyColormap')

其他

图中曲线按顺序画出:

pause(a)表示程序暂停a秒后继续执行

当程序中只有pause,并没有参数a,按任意键程序才继续执行。可用于hold on前后。

MATLAB气象绘图汇总
https://mp.weixin.qq.com/s/6KxZmA-p1ORaKEmA8mno5g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值