(一)MATLAB绘图-基础知识及常用绘图

目录

前言

一、基础知识

(一)绘制图形及坐标轴标题

(二)坐标轴范围

(三)常用线型、点形及颜色代号

(四)图例绘制

(五)自定义颜色数组

二、常用绘图

(一)二维热力图

(二)阴影误差折线图

(三)箱体图

(四)三维热力图

(五)三维密度图

总结


前言

        科研过程中,绘图是一项非常重要的技能,图画好了,科研工作就能事半功倍。本博客首先介绍了matlab中常用的绘图命令,之后介绍了几种常用的matlab二维以及三维绘图方法(对应资源可以在资源下载列表中获取),解释了各种图形的适用场景以及注意点。图形包括二维热力图、阴影误差折线图、箱体图、三维热力图和三维密度图,后续会持续更新更多的绘图技巧。


一、基础知识

        绘图命令主要由绘图函数来实现,每个绘图函数都有相应的属性,例如字体属性“Fontname”;字号属性“Fontsize”,颜色属性“Color”等,想实现某种绘图功能时,可以查找对应函数的属性进行定义,从而绘制想要的图形。

(一)绘制图形及坐标轴标题

        图形标题是指图的题目,坐标轴标题是指x、y、z轴的标题。“Fontsize”是指字体的大小,(‘Fontsize’,12)是指将标题的字号设置为12;“Fontname”是指字体的种类,(‘Fontname’,‘宋体’)是指将标题的字体种类设置为宋体。(注意程序中用的是单引号)

       将图形的标题设置为“标题1”,x、y、z轴的标题分别设置为“x”、“y”、“z” 。字号统一设置为12号,字体为“宋体”。代码如下(示例):

title('标题1',‘Fontsize’,12,‘Fontname’,‘宋体’);
xlabel('x',‘Fontsize’,12,‘Fontname’,‘宋体’);
ylabel('y',‘Fontsize’,12,‘Fontname’,‘宋体’);
zlabel('z',‘Fontsize’,12,‘Fontname’,‘宋体’);

(二)坐标轴范围

        绘图过程中常用到x、y、z轴范围限定的功能,通常用“xlim([a , b])”函数来实现,其中[a , b]数组表示坐标轴范围的上下限。将各个坐标轴的范围设为[0 , 1]。代码如下(示例):

xlim([0,1]);
ylim([0,1]);
zlim([0,1]);

(三)常用线型、点形及颜色代号

        matlab中常用线型、点型及颜色可以通过字母或者符号的形式来定义,具体的内容如表中所示:

线型

实线

虚线点画线双画线
--.--
颜色绿品红黄色
bgrcmykw
点型实心点十字空心圆星号上三角下三角左三角右三角
.+o*^v<>
方块五角星六角星菱形叉号
sphdx

        绘制黑色虚线空心圆的图形,对应的代码为:

x = 1:100;
y = 2*x;
plot(x,y,'k:o');

(四)图例绘制

        图例的绘制用的函数为“legend()”函数,函数通用有字号属性“Fontsize”以及字体种类属性“Fontname”。同时,科研绘图中常常遇到中英文混合的问题,为了解决matlab中的中英文字体不同的问题,需要对中英文字体进行各自的定义;另外“Location”属性可以用来定义图例在图形中位置。

        假设需要绘制“种类1”的图例,图例字体大小为12,英文字体为“Times New Roman”,中文字体为“宋体”,图例位于图形的左上方。代码如下(示例):

legend({'\fontname{宋体}种类\fontname{Times New Roman}1'},Location="northwest");
legend('Fontsize',12);
%绘制指定的图例
leg = findobj(gca,'Tag','Box'); % add legend
legend([leg(1),leg(7),leg(13),leg(19)], ["a","b", "c","d"] );

(五)自定义颜色数组

        对于常用的绘图命令,基本都具有颜色“Color”的属性,属性后面需要定一个三维RGB数组,matlab中默认范围是0 ~ 1,但是网络上得到的数组的取值范围常常是0 ~ 255,因此需要对数组进行转换,才能使用定义的颜色。大家可以自己在网上找喜欢的颜色对图形进行定义。我自己常用的一组颜色数组为[122 027 109; 246 111 105; 21 151 165],矩阵中每一行代表一个RGB数组,实际使用过程中,需要除以255才可以正常使用。(后面会专门写一篇博客来记录好看的科研文章配色,也会更新相应的程序)

        假设绘制一个自定义颜色的图形。代码如下(示例):

x = 1:100;
y = 2*x;
color=[122 027 109]/255;
plot(x,y,'Color',color);

二、常用绘图

(一)二维热力图

        二维热力图主要可以通过颜色来表示数值的大小,十分直观;绘图用“surf()”函数实现,之后用view(2)对x-y平面进行观察,从而得到二维热力图,如果不用“view()”函数,则得到了三维热力图。

        代码如下(示例):

%数据准备
Z = zeros(101,101);%其中x为行,y为列
x=0:0.01:1;
y=0:0.01:1;
[X,Y] = meshgrid(x,y);
 
%定义z的值
%%%%自行填充代码%%%%%%%%

%绘图
figure(1);
s1=surf(X,Y,Z);
view(2);
cb=colorbar;
colormap(jet)%添加色条设置
shading flat; % 消除栅格线
s1.FaceColor='interp';
set(gca,'FontSize',14,'Fontname', 'Helvetica');
set(gca,'YTick',0:0.2:1,'YTicklabel',{'0','0.2','0.4','0.6','0.8','1'});
ylabel('y','FontSize',14);
xlabel('x','FontSize',14);
title('Exact');

(二)阴影误差折线图

        误差阴影折线图是用来体现数据变化范围的,阴影部分由数据最大值和最小值组成,并且阴影中间的折线位置代表数据的均值。此图可以很好的体现数据误差变化范围以及数据变化趋势,并且可以根据自己的喜好定义不同颜色以及阴影部分透明度;绘图用“shade()”函数实现,此函数为自定义函数。(可在资源中下载)

        部分代码如下(示例):

shade(x,y1_mean,errbar1,'lineprops',{'Color',color(1,:),'LineWidth',0.9,'MarkerFaceColor',[0 0.4470 0.7410]},'patchSaturation',0.65);
hold on;
shade(x,y2_mean,errbar2,'lineprops',{'Color',color(2,:),'LineWidth',0.9,'MarkerFaceColor',[0.8500 0.3250 0.0980]},'patchSaturation',0.65);
hold on;
shade(x,y3_mean,errbar3,'lineprops',{'Color',color(3,:),'LineWidth',0.9,'MarkerFaceColor',[0.9290 0.6940 0.1250]},'patchSaturation',0.65);
set (gca, 'FontSize', 14 );
xlabel('迭代次数','FontSize',14);
ylabel('Log(误差)','FontSize',14);
title('误差阴影折线图','FontSize',14);

(三)箱体图

        箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图,因形状如箱子而得名。箱线图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后, 连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数在箱体中间;绘图用“boxplot()”函数实现。(可在资源中下载)

        部分代码如下(示例):

box_1 = boxplot(data1,'positions',position_1,'colors',color1,'width',0.4,'symbol','+','outliersize',1);
set(box_1,'LineWidth',1.1);
hold on;
box_2 = boxplot(data2,'positions',position_2,'colors',color2,'width',0.4,'symbol','+','outliersize',5);
set(box_2,'LineWidth',1.1);
hold on;
box_3 = boxplot(data3,'positions',position_3,'colors',color3,'width',0.4,'symbol','+','outliersize',5);
set(box_3,'LineWidth',1.1);
hold on;
box_4 = boxplot(data4,'positions',position_4,'colors',color4,'width',0.4,'symbol','+','outliersize',5);
set(box_4,'LineWidth',1.1);
hold on;
set(gca,'XTick', [0 10 20 30 40 50 60 ],'XTickLabel', {'0' '1' '2' '3' '4' '5' '6' },'Fontsize',14);
xlim([0,70]);
ylim([10^-6,0.02]);
xlabel('迭代次数');
ylabel('Log(误差)');
set(gca,'Yscale','log');
leg = findobj(gca,'Tag','Box'); % add legend
legend([leg(1),leg(7),leg(13),leg(19)], ["a","b", "c","d"] );

(四)三维热力图

        三维热力图是用来在三维空间内绘制曲面的图形,曲面的颜色代表z轴值的大小,可以用来展示三维数据的变化。首先对x轴和y轴的数据进行网格化,要求x轴和y轴数据等长,一般为1*n维的数组;z轴的数据要求与网格数据一一对应,一般为n*n的矩阵;之后用“surf()”函数进行绘图操作。(可在资源中下载)

        部分代码如下(示例):

%绘图,逐点误差图
figure(1);
s1=surf(X,Y,z3);
colormap('Jet')%添加色条设置
s1.FaceColor='interp';
shading flat;
grid off;

(五)三维密度图

        三维密度图是用来展示四维数据的图形,x轴、y轴和z轴数据等长,一般为1*n维的数组,每个点的颜色代表数据值的大小;数据值矩阵为n*n*n维的矩阵;绘图用“scatter3()”函数实现。(可在资源中下载)

        部分代码如下(示例):

scatter3(x, y, z, 5, h, 'filled')
% hTitle = title('Density Scatter3');
hXLabel = xlabel('x');
hYLabel = ylabel('y');
hZLabel = zlabel('z');
set(gca,'FontSize',14);


总结

        以上就是今天要讲的内容,本文简单介绍了matlab中常用的绘图函数使用方法以及几种常见图形的绘制技巧。绘图是科研工作中非常关键的一步,好的图片可以提升文章档次,使得文章阅读起来更加直观便捷,因此掌握一些绘图技巧是十分必要的。绘图技能的学习是循序渐进的,最好的方法就是借鉴别人的程序转化为自己的知识,具体程序可在资源中下载,后续会持续更新更多的绘图技巧。

  • 59
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Matlab是一款功能强大的科学计算软件,也可以用来进行数据可视化和图形绘制。如果想要绘制缝洞孔隙图,可以按照以下步骤进行操作: 1. 准备数据:缝洞孔隙图通常是由多个数据点组成的点云图,因此需要准备坐标数据。可以将坐标数据保存在文本文件中,每个数据点一行,每个数据点用逗号隔开。例如,第一列是横坐标,第二列是纵坐标,第三列是高度。 2. 导入数据:在Matlab界面中,选择导入数据的功能,将之前准备好的数据导入Matlab的工作区中。 3. 绘制点云图:使用plot3函数绘制点云图。plot3函数的前两个参数分别表示横坐标和纵坐标,第三个参数表示高度。可以根据需要调整颜色、点的大小等参数,使图像更具美观性和信息量。 4. 绘制曲面:在点云图的基础上,使用Mesh或surface函数绘制曲面,这样可以更直观地展现缝洞孔隙的形态和分布。根据需要可以使用不同的颜色、填充模式和透明度等参数。 5. 添加标注:在绘制完缝洞孔隙图后,可以添加标注,说明图像的含义和相关参数。可以使用title、xlabel、ylabel和zlabel等函数来添加各种文字标注,更方便地呈现数据。 通过以上步骤,就可以在Matlab中绘制出缝洞孔隙图。这个过程需要一定的Matlab基础和绘图经验,但对于科研人员和工程师来说,掌握这种技能是非常必要的。 ### 回答2: matlab是一款非常强大的数学软件,可以支持绘制各种类型的图像,包括缝洞孔隙图。缝洞孔隙图是地质学家经常用来描述岩石孔隙度和孔隙结构的一种图像,在渗透性、储层评价等领域有着广泛的应用。 首先,要绘制缝洞孔隙图,需要先将相关的数据导入到matlab中。可以从图片、文本等不同的方式导入,具体根据数据来源不同而定。然后,可以使用matlab的函数库中的imread函数读取图片数据,或者使用fread函数读取二进制文本数据。可以根据具体情况选择不同的函数。 接下来,根据数据类型和格式,可以对数据进行预处理,比如对缺失值、异常值进行处理,并进行数据分析和统计。随后,可以使用matlab绘图函数库,比如plot、image等函数进行绘图。可以根据数据类型和要求选择不同的函数,比如imadjust函数可以对图片进行调整,colormap函数可以设置颜色映射表,colorbar函数可以显示颜色条。 在绘制缝洞孔隙图时,可以根据具体要求选择合适的绘图模式,比如点图、线图、等高线图等。可以使用scatter函数绘制散点图、contourf函数绘制等高线图、mesh函数绘制三维图像等。在绘制时,还可以添加坐标轴、标题等标注,使用legend函数添加图例,并对图像进行美化和优化,包括修改字体、线型、颜色等。 绘制缝洞孔隙图需要具备一定的数学、地质学知识和matlab编程基础,需要掌握常见的数据处理和分析方法,并熟悉matlab的函数库和绘图工具。如果遇到困难,可以参考matlab官方文档、编程手册以及相关教程、论坛等资源,进行学习和交流。 ### 回答3: MATLAB是一种常用的科学计算软件,它可以进行数据处理、图形绘制等操作。绘制缝洞孔隙图需要通过MATLAB中的绘图工具来实现。 首先,需要利用MATLAB读取有关缝洞孔隙的数据文件,例如csv文件等。在读取数据时,需要注意将数据类型转换为数值型数据。 然后,通过调用MATLAB中的绘图函数,可以对数据进行可视化处理,绘制出缝洞孔隙图。在绘制过程中需要注意调整坐标轴、颜色、线条样式等参数,以便更好地展示数据。 此外,为了使绘制出的缝洞孔隙图更加易于理解,还可以添加注释、标题等元素。这些元素可以通过MATLAB中的注释函数来实现。 最后,需要将绘制好的缝洞孔隙图保存为图片或者PDF文件。可以使用MATLAB中提供的保存函数,将绘制好的图形保存到指定的目录下。 总的来说,利用MATLAB绘制缝洞孔隙图需要熟练掌握MATLAB的基础操作和绘图函数,同时需要有一定的数据处理和可视化能力。通过绘制缝洞孔隙图,可以更加直观地展示数据,帮助人们更好地理解相关问题。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值