目录
图形对象属性
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
% 保存设置的颜色图
ax = gca;
MyColormap = colormap(ax);
save('MPLNETmap','MyColormap')
其他
图中曲线按顺序画出:
pause(a)表示程序暂停a秒后继续执行
当程序中只有pause,并没有参数a,按任意键程序才继续执行。可用于hold on前后。
MATLAB气象绘图汇总
https://mp.weixin.qq.com/s/6KxZmA-p1ORaKEmA8mno5g