【科研经验】快速上手MATLAB数据可视化(一)

快速上手MATLAB数据可视化(一)
基本绘图技巧与实战
常用绘图函数、配色方案与设置技巧
01
导语
国外Nathan Yau总结了在数据可视化的过程中,一般要经历的四个需要反复思考的过程:
1.你拥有什么样的数据?
(What data do you have?)
2. 你想表达什么样的数据信息?
(What do you want to know about your data?)
3. 你会什么样的数据可视化方法?
(What visualization methods should you use?)
4. 你从图表中能获得什么样的数据信息?
(What do you see and does it makes sense?)
不同于其他图形界面化绘图软件,MATLAB还可以通过编程调用函数的方式对数据进行高效率可视化操作。
为了增加数据可视化的方法,今天我们主要介绍如何快速应用MATLAB常见的散点图、二维图、三维图、曲面图基本函数进行绘图,以及如何通过配色方案设置与手动设置标签技巧达到高质量期刊图像的可视化效果。
02
基本绘图函数、参数与辅助指令
●基本绘图函数 ●
scatter
二维散点图
scatter(x,y)
在向量 x 和 y 指定的位置创建一个包含圆形的散点图。
扩展用法:
scatter(x,y,sz) 以sz数值指定圆大小绘制。scatter(x,y,sz,c)以c数值指定圆颜色。scatter(___,'filled') 填充圆形。可以将 'filled' 选项与前面语法中的任何输入参数组合一起使用。scatter(___,mkr) 指定标记类型。
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);
sz = 25;
c = linspace(1,10,length(x));
scatter(x,y,sz,c,'filled')
scatter3
三维散点图
scatter3(X,Y,Z)
在向量 X、Y 和 Z 指定的位置显示圆圈,形成散点图。
扩展用法:
scatter3(X,Y,Z,S)以S指定的大小绘制圆圈。
scatter3(X,Y,Z,S,C)以C指定的颜色绘制.
scatter3(___,'filled') 填充圆形。可以将 'filled' 选项与前面语法中的任何输入参数组合一起使用。
scatter3(___,mkr) 指定标记类型。
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
S = repmat([50,25,10],numel(X),1);
C = repmat([1,2,3],numel(X),1);
s = S(:); c = C(:);
scatter3(x,y,z,s,c,'filled')
view(-30,10)
plot
二维线图
plot(X,Y)
绘制二维空间中的线图。
扩展用法:
plot(X,Y,LineSpec) 设置线型、标记符号和颜色。
plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)
在同一组坐标轴上绘制多个 X、Y 对组的图,设置每个线条的线型、标记符号和颜色。
plot(___,Name,Value)
使用一个或多个 Name,Value 对组参数指定线条属性。
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--gs',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5])
plot3
三维线图
plot3(X,Y,Z)
绘制三维空间中的坐标。
扩展用法:
plot3(X,Y,Z,LineSpec) 使用指定的线型、标记和颜色创建绘图。
plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn)在同一组坐标轴上绘制多组坐标,并可为每个 XYZ 三元组指定特定的线型、标记和颜色。
plot3(___,Name,Value) 使用一个或多个名称-值对组参数指定 Line 属性。
t = 0:pi/500:pi;
X(1,:) = sin(t).*cos(10*t);
X(2,:) = sin(t).*cos(12*t);
X(3,:) = sin(t).*cos(20*t);
Y(1,:) = sin(t).*sin(10*t);
Y(2,:) = sin(t).*sin(12*t);
Y(3,:) = sin(t).*sin(20*t);
Z = cos(t);
plot3(X,Y,Z)
surf
曲面图
surf(X,Y,Z)
创建一个三维曲面图,具有实色边和实色面的三维曲面。
扩展用法:
surf(X,Y,Z,C)以C指定的颜色绘制。
surf(Z) 创建一个曲面图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标。
surf(Z,C)以C指定的颜色绘制。
surf(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。
[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s= surf(X,Y,Z,'FaceAlpha',0.5)
s.EdgeColor = 'none';
●常用参数备查 ●
LineSpec
线型、标记和颜色
线型、标记和颜色,指定为包含符号的字符向量或字符串。符号可以按任意顺序显示。无需同时指定所有三个特征(线型、标记和颜色)。
示例:'--or' 是带有圆形标记的红色虚线
Marker
标记符号
标记符号,指定为下表中的标记之一。默认情况下,图形线条没有标记。通过指定标记符号沿该线条上的每个数据点添加标记。
示例:'Marker','+'
示例:'Marker','diamond'
Color/
MarkerEdgeColor/
MarkerFaceColor
各类颜色
指定为 RGB 三元组、十六进制颜色代码、颜色名称或短名称。
RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。强度值必须位于 [0,1] 范围内。
十六进制颜色代码是字符向量或字符串标量,以井号 (#) 开头,后跟三个或六个十六进制数字,范围可以是 0 到 F。
EdgeColor
边缘线条颜色
边线颜色,指定为下面列出的值之一。
默认颜色 [0 0 0] 对应于黑边。
FaceColor
面颜色
面颜色,指定为下表中的值之一。
●常用辅助作图指令 ●
title
图标题
title(txt)
将指定的标题添加到 gca 命令返回的坐标区或图中。
legend
图例
legend(label1,...,labelN)
设置图例标签。以字符向量或字符串列表形式指定标签。
如: legend('Jan','Feb','Mar’)。
xlabel
坐标轴标签
xlabel(txt)
将为 gca 命令返回的当前坐标区或图的 x 轴添加标签。
类似地ylabel/zlabel。
03
实战实例
下面以一个高质量科研发表图片为例进行实战:
原图如下:
Ref: Bonacci, F., Chateau, X., Furst, E.M. et al. Contact and macroscopic ageing in colloidal suspensions. Nat. Mater. (2020). https://doi.org/10.1038/s41563-020-0624-9
根据我们刚学到的基本绘图函数,可得到:
Load data
sz=10;
%设置圆圈大小
scatter(x1,y1,sz,'filled');
hold on
%继续作画
scatter(x2,y2,sz,'filled');
hold on
%继续作画
scatter(x3,y3,sz,'filled');
legend('t=79 s','t=379 s','t=1879 s')
%增加图例
xlabel(‘{\it\delta} (\mum) ’,‘FontSize’,16);
%坐标轴标注
ylabel('\it f(pN)','FontSize',16);
%坐标轴标注
基本作图结果
●进阶调整 ●
我们进行进一步调整,:
Load data
sz = 10;%设置圆圈大小
scatter(x1,y1,sz,[0.9290 0.6940 0.1250],‘filled’); %%指定颜色
hold on%继续作画
scatter(x2,y2,sz,[0 0.5960 0.2980],'filled'); %%指定颜色
hold on%继续作画
scatter(x3,y3,sz,[0.4940 0.1840 0.5560],'filled');
%%指定颜色
xlabel('{\it\delta} (\mum) ','FontSize',16);
%坐标轴标注
ylabel('\it f(pN)','FontSize',16);
%坐标轴标注
set(gca,'xminortick','on');
%打开小刻度
set(gca,'xminortick','on');
%打开小刻度
set(gca,'yminortick','on');
%打开小刻度
legend('\itt=79 s','\itt=379 s','\itt=1,879 s')
%增加图例
legend boxoff
%%去掉边框
%%手动删除坐标轴的部分标签,调整legend的位置
进阶调整结果
●效果对比 ●
原图
戳下方图片对比
基本绘图VS进阶调整
04
进阶调整技巧说明
Tips-1配色设置 :
常规直接作图结果与高质量期刊结果在配色方案上有较大差距,主要解决方案有以下三种:
方案1:采用matlab中提供的RGB配色指定点或线条颜色。
方案2:利用其他软件中的取色器获得其他高质量图像中配色所采用的RGB值用于配色。
方案3:利用其他软件中的经典配色方案,具体如下。
Ref:http://easychart.github.io/post/Colorthemes/
Tips-1手动设置坐标标签 :
Step1:选择坐标区属性。
Step2:选择X轴下的刻度。
Step3:均选择手动,之后删除不想要出现的标签。
滑动查看每步
05
小结
为了增加数据可视化的方法,今天我们主要介绍如何快速应用MATLAB常见的散点图、二维图、三维图、曲面图基本函数进行绘图,以及如何通过配色方案设置和标签设置技巧达到高质量期刊图像的可视化效果。
基本函数及常用参数:scatter, scatter3, plot, plot3, surf。
基本绘图辅助函数title, legend, xlabel。
散点绘图实例及提高图像质量的技巧。
●END ●
作者:张开宇(北京理工大学)
相关链接:
【科研经验】基于Materials Studio的两相聚合物简单共混模拟
【科研经验】如何作出晶体结构渲染图—crystalmaker小白的逆袭之路
【科研经验】第一性原理计算:使用CASTEP程序模块计算某一晶面的差分电荷密度
推荐阅读

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
