matlab绘图与可视化(代码片段)

Ilean_J Ilean_J     2022-11-14     350

关键词:

 1、设置图形对象属性值

set(h,\'属性名称\',\'属性值\')

>> subplot(1,2,1);
h1=line([0 1],[0 1]);
text(0,0.5,\'unchange\');
subplot(1,2,2);
h2=line([0 1],[0 1]);
set(h2,\'linewidth\',4);
text(0,0.5,\'change\');

2、基本二维绘图函数

  1. plot

  

x=0:0.25:2*pi;
y=sin(x);
plot(x,y,\'-ro\',\'linewidth\',2,\'markeredgecolor\',\'b\',\'markerfacecolor\',\'0.49,1,0.65\',\'markersize\',14);
>> xlabel(\'x\');
>> ylabel(\'y\')

 

  

  2.  loglog:双对数坐标绘图

>> x=logspace(-1,2);
loglog(x,exp(x),\'-s\');
grid on
xlabel(\'x\')
ylabel(\'y\')

  

  3.  semilogx,semilogy:半对数坐标绘图

>> x=-10:0.001:10;
semilogy(x,2.^x);

  

  4.  polar:极坐标绘图

>> t=0:0.01:10;
polar(t,sin(2*t).*cos(2*t),\'--.g\')

  

  5.  plotyy:双纵坐标绘图

>> x=0:0.1:20;
>> y1=200*exp(-0.05*x).*sin(x);
>> y2=0.8*exp(-0.5*x).*sin(10*x);
>> ax=plotyy(x,y1,x,y2,\'plot\');xlabel(\'x\');
>> set(get(ax(1),\'ylabel\'),\'string\',\'left y\');
>> set(get(ax(2),\'ylabel\'),\'string\',\'right y\');

  

3、二维图形修饰和添加注释(help+...)

  1.  hold:图形保持
  2. axis:设置坐标系的刻度及显示方式
  3. box:显示或隐藏坐标框
  4. grid:为当前坐标系添加或消除网格
  5. title:添加标题
  6. xlabel、ylabel:为当前坐标轴添加标签
  7. text:在当前坐标系中添加文本对象
  8. gtext:在当前坐标系中交互式添加文本对象
  9. legend:在当前坐标系中添加 line 对象和 patch 对象的图形标注框
  10. annotation:在当前图形窗口建立注释对象(annotation对象)
  11. subplot:绘制子图,即在当前图形窗口以平铺的方式创建多个坐标系

 

>> t=linspace(0,2*pi,60);
>> x=cos(t);
>> y=sin(t);
>> plot(t,x,\'b:\',\'linewidth\',3);
>> hold on;
>> plot(t,y,\'r-.\',\'linewidth\',1);
>> plot(x,y,\'g-\',\'linewidth\',2.5);
>> axis equal;
>> xlabel(\'X\');
>> ylabel(\'Y\');
>> legend(\'x=cos(t)\',\'y=sin(t)\',\'x^2+y^2=1\',\'location\',\'northeast\');

   

 

>> p=[3 1;1 4];
r=5;
[v,d]=eig(p);%求特征值,化为标准方程
a=sqrt(r/d(1));%椭圆长半轴
b=sqrt(r/d(4));
t=linspace(0,2*pi,60);
xy=v*[a*cos(t);b*sin(t)];
plot(xy(1,:),xy(2,:),\'k\',\'linewidth\',3);
h=annotation(\'textarrow\',[0.606 0.65],[0.55 0.65]);
set(h,\'String\',\'3x^2+2xy+4y^2=5\',\'FontSize\',15);
h=title(\'tuo yuan qu xian\',\'FontSize\',18,\'FontWeight\',\'bold\');%加粗
set(h,\'Position\',[-0.00345622 1.35769 1.00011]);
axis([-1.5 1.5 -1.2 1.7]);
xlabel(\'X\');
ylabel(\'Y\');

  

 

>> a=[-19.6749 22.2118 5.0905];
x=0:0.01:1;
y=a(1)+a(2)/2*(x-0.17).^2+a(3)/4*(x-0.17).^4;
plot(x,y);
text(\'interpreter\',\'latex\',\'string\',[\'$$ -19.6749+\\frac22.21182(x-0.17)^2\'...])
\'+\\frac5.09054(x-0.17)^4 $$\'],\'position\',[0.05,-12],\'fontsize\',12);

  

  • \\frac22.21182:22.2118 / 2
  • \\alpha:α
  • \\beta:beta

  help text properties

4、修饰图形 

>> x=linspace(0,2*pi,60);
>> y=sin(x);
>> h=plot(x,y);
>> grid on;
>> set(h,\'color\',\'k\',\'LineWidth\',2);
>> xticklabel=\'0\',\'pi/2\',\'pi\',\'3pi/2\',\'2pi\';
>> set(gca,\'xtick\',[0:pi/2:2*pi],\'XTickLabel\',xticklabel,\'TickDir\',\'out\');
>> xlabel(\'0\\leq\\theta\\leq2\\pi\');
>> ylabel(\'sin(\\theta)\');
>> text(8*pi/9,sin(8*pi/9),\'\\leftarrow sin(8\\pi\\div 9)\',\'HorizontalAlignment\',\'left\');
>> axis([0 2*pi -1 1]);

   

5、常用统计绘图函数

 

>> x=normrnd(0,1,1000,1);  %产生1000个标准正态分布随机数
hist(x,20);%绘制直方图
xlabel(\'样本数据\');
ylabel(\'频数\');
figure;      %新建一个图形窗口
cdfplot(x)

>> subplot(3,3,1);
>> f=@(x)200*sin(x)./x;%定义匿名函数
>> fplot(f,[-20,20]);
>> title(\'y=200*sin(x)/x\');
>> 
>> subplot(3,3,2);
>> ezplot(\'x^2+y^2=1\',[-1.1 1.1]);
>> axis equal;
>> 
>> subplot(3,3,3);
>> ezpolar(\'1+cos(t)\');
>> 
>> subplot(3,3,4);
>> x=[10 10 25 35 20];
>> name=\'a\',\'b\',\'c\',\'d\',\'e\';
>> explode=[0 0 0 0 1];
>> pie(x,explode,name);
>> 
>> subplot(3,3,6);
>> stem(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi));
>> 
>> subplot(3,3,5);
>> stairs(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi));
>>
>> subplot(3,3,7); >> z=eig(randn(20,20)); >> compass(z); >> >> subplot(3,3,8); >> theta=(-90:10:90)*pi/180; >> r=2*ones(size(theta)); >> [u,v]=pol2cart(theta,r); >> feather(u,v); >> >> subplot(3,3,9); >> t=(1/16:1/8:1)\'*2*pi; >> fill(sin(t),cos(t),\'r\'); >> axis square;

5、三维图形绘制

 

利用 mesh 和 surf 之前,应先产生图形对象的网格数据 --> meshgrid

>> t=linspace(0,10*pi,300);
>> plot3(20*sin(t),20*cos(t),t,\'b\',\'linewidth\',2);
>> hold on;
>> quiver3(0,0,0,1,0,0,25,\'k\',\'filled\',\'linewidth\',2);
>> quiver3(0,0,0,0,1,0,25,\'k\',\'filled\',\'linewidth\',2);
>> quiver3(0,0,0,0,0,1,40,\'k\',\'filled\',\'linewidth\',2);
>> grid on;
>> xlabel(\'x\');ylabel(\'y\');zlabel(\'z\');
>> axis([-25 25 -25 25 0 40]);
>> view(-210,30);

>> [x,y]=meshgrid(1:4 , 2:5)

x =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4


y =

     2     2     2     2
     3     3     3     3
     4     4     4     4
     5     5     5     5

>> plot(x,y,\'r\',x\',y\',\'b\',x,y,\'k.\',\'MarkerSize\',18);
>> axis([0 5 1 6]);

eg:绘制三维曲面  z=xe-(x2+y2)  的等高线图和梯度场

>> [x,y]=meshgrid(-2:.2:2);
z=x.*exp(-x.^2-y.^2);
[dx,dy]=gradient(z,0.2,0.2);
contour(x,y,z);
hold on;
quiver(x,y,dx,dy);
h=get(gca,\'children\');

>> ezsurf(\'u*sin(v)\',\'u*cos(v)\',\'4*v\',[-2*pi,2*pi,-2*pi,2*pi]);

 

>> subplot(1,2,1);
>> [x,y]=meshgrid(0:0.25:4,-2:.25:2);
>> z=sin(x).*cos(y);
>> [nx,ny,nz]=surfnorm(x,y,z);%计算法线方向
>> surf(x,y,z);
>> hold on;
>> quiver3(x,y,z,nx,ny,nz,0.5);
>> axis(0 4 -2 2 -1 1);
>> axis([0 4 -2 2 -1 1]);

>> subplot(1,2,2);
>> t=linspace(-2,2,20);
>> [x,y,z]=meshgrid(t);
>> [x,y,z]=meshgrid(t,t,t);
>> v=x.*exp(-x.^2-y.^2-z.^2);
>> xslice=2;
>> yslice=2;
>> xslice=[-1.2,.8,2];
>> zslice=[-2,0];
>> slice(x,y,z,v,xslice,yslice,zslice);

 6、三维图形的修饰

colormap:绘图色彩调整

shading:着色效果

alpha:透明度

light:光源

lighting:光照模式

material:对光反射效果

view:调整视点

>>  %立方体顶点坐标
>> vert=[0 0 0;0 200 0;200 200 0;200 0 0;0 0 100;...]
0 200 100;200 200 100;200 0 100];
>> fac=[1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8];
>> view(3);
h=patch(\'faces\',fac,\'vertices\',vert,\'facecolor\',\'g\');
set(h,\'facealpha\',0.25);
hold on;
[x0,y0,z0]=sphere;
>> x=30+30*x0;y=50+30*y0;z=50+30*z0;
>> h1=surf(x,y,z,\'linestyle\',\'none\',\'facecolor\',\'b\',\'edgecolor\',\'none\');
>> lightangle(45,30);%建立光源并设置光源视角
>> lighting phong;
>> axis equal;

7、图形导出到文件

print

hgexport

saveas:saveas(h,\'filename.ext\')

    saveas(h,\'filename\',\'format\')   ------------  format:扩展名(字符串)

8、动画制作

(1)彗星运行轨迹动画

  comet,  comet3

>> t=linspace(0,10*pi,2000);
>> x=t.*cos(t);
>> y=t.*sin(t);
>> comet(x,y)

(2霓虹闪烁动画

  spinmap

>> sphere
>> axis equal
>> axis off
>> spinmap(10,1)

(3)电影动画

  getframe   movie 

>> x=linspace(-2,2,100);
>> [x,y,z]=meshgrid(x,x,x);
>> v=(x.^2+9/4*y.^2+z.^2-1).^3-x.^2.*z.^3-9/80*y.^2.*z.^3;
>> p=patch(isosurface(x,y,z,v,0));
>> set(p,\'facecolor\',\'red\',\'edgecolor\',\'none\');
>> view(3)
>> axis equal;
>> axis off
>> light(\'posi\',[0 -2 3])
>> lighting phong
>> set(gca,\'nextplot\',\'replacechildren\')
>> xx=get(p,\'XData\');
>> yy=get(p,\'yData\');
zz=get(p,\'ZData\');
for j=1:20
bibi=sin(pi*j/20);
set(p,\'XData\',bibi*xx,\'YData\',bibi*yy,\'ZData\',bibi*zz)
f(j)=getframe;
end
>> movie(f,10)
%是个心跳

 

matlab|我也做了一套绘图配色可视化模板(代码片段)

看到包括「阿昆的科研日常」等很多大佬都做了一套自己的模板用来分享一些科研绘图的配色,我也试着做了一套离散颜色版的(连续颜色敬请期待),以后遇到好看的配色可能会用这套模板分享,展示一下用ggsci库中... 查看详情

绘图与可视化--pandas中的绘图函数(代码片段)

matplotlib是一种比较低级的工具,要组装一张图表,你得用它得各种基础组件才行:数据展示(即图表类型:线型图、柱状图、盒型图、散布图、等值线图等)、图例、标题、刻度标签以及其它注释型信息。在pandas中,有行标签... 查看详情

matlab学习笔记——数据可视化(代码片段)

文章目录7.1二维图形7.1.1直角坐标系绘图1.plot()函数2.plotyy()函数3.对函数自适应采样的绘图函数fplot()4.含选项的绘图软件7.1.2其他坐标系绘图1.极坐标绘图2.对数坐标系绘图7.1.3二维特殊图形绘制函数1.bar函数2.hist函数3.pie函数4.fill... 查看详情

数据可视化应用气象绘图(附python代码)(代码片段)

数据本文使用数据来自:https://psl.noaa.gov/data/gridded/data.ncep.reanalysis.derived.surface.html北半球冬季平均经向风难点:各种库的下载与安装,主要难点在xarray上。因为不需要设置地图,此图还是比较简单的。结果和代码如下。fig4.2import... 查看详情

python绘图之seaborn(代码片段)

最近在系统梳理一下Python的几个可视化绘图库,其中seaborn上手较为方便快捷,下面给大家简单介绍一下,可以满足自己日常需要的绘图要求。Seaborn是一个基于matplotlib且数据结构与pandas统一的统计图制作库。Seaborn框... 查看详情

python-matplotlib可视化——图形的输出与保存(代码片段)

Python-Matplotlib可视化(8)——图形的输出与保存前言生成PNG图片文件控制透明度使用透明背景将图形渲染为PNG文件制作包含图形的HTML页面控制输出分辨率生成PDF或SVG文档系列链接前言Matplotlib是Python的绘图库,它提供... 查看详情

seaborn使用(绘图函数)(代码片段)

seaborn使用(绘图函数)数据集分布的可视化分类数据的绘图线性关系可视化一.数据集分布的可视化distplotkdeplotrugplot1.distplot()灵活的绘制单变量的分布,传入一组一维数据默认kde为True,纵坐标为在横坐标区域内分布的概率,曲线表... 查看详情

python数据科学中的seaborn绘图可视化(代码片段)

本篇文章主要研究Seaborn库——Seaborn是一个统计绘图库,建立在Matplotlib基础之上。它具有非常漂亮的默认绘图样式,并且也与PandasDataFrames配合得很好。Seaborn可以像安装任何其他Python包一样使用“pip”进行安装。pipinstallse... 查看详情

数据可视化应用气象绘图(附python代码)(代码片段)

数据本文使用数据来自:https://psl.noaa.gov/data/gridded/data.ncep.reanalysis.derived.surface.html北半球冬季平均经向风难点:各种库的下载与安装,主要难点在xarray上。因为不需要设置地图,此图还是比较简单的。结果和代码如下。fig4.2import... 查看详情

matplotlib(代码片段)

为什么要学习matplotlib能将数据进行可视化,更直观的呈现使数据更加客观、更具说服力matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材MATLAB,模仿MATLAB构建matplotlib基本要点每个红色的点是坐标,把5个点... 查看详情

python数据分析工具|matplotlib(代码片段)

不论是数据挖掘还是数学建模,都免不了数据可视化的问题。对于Python来说,matplotlib是最著名的绘图库,它主要用于二维绘图,当然也可以进行简单的三维绘图。它不但提供了一整套和Matlab相似但更为丰富的命令,让我们可以... 查看详情

机器学习——可视化绘图matplotlib和seaborn(代码片段)

安装matplotlib和seabornhttps://blog.csdn.net/Jia_jinjin/article/details/80428598seaborn pairplot:特征两两对比参数说明:data:数据。 g=sns.pairplot(data)hue:根据指定的特征用不同的颜色显示数据,即指定分类标准。g=sns.pairplot(data,hue="l 查看详情

数据可视化应用xarray绘图可视化-赋权降维和groupby(附代码)(代码片段)

赋权降维和Groupby(Ⅰ) 引入相关包和导入数据:import numpy as npimport xarray as xrfrom matplotlib import pyplot as plt# 数据导入path = "...\\\\sst. 查看详情

matlab构建栅格地图绘图思路(代码片段)

matlab构建栅格地图绘图思路近来因研究需要,调研并思考了栅格地图的生成方法,暂时总结以备不时之需。栅格的建立最需要注意栅格粒度的问题,即根据需要调整栅格的边长,目前有两种思路一种是固定栅格边长为坐标轴的单... 查看详情

matlab|可视化|罗密欧与朱丽叶的数据统计(代码片段)

前两天看到了一个非常好看的可视化案例(https://www.reddit.com/r/dataisbeautiful/comments/8ivizh/visualisation_of_words_spoken_between_romeo_and/):继续手痒想绘制一下试试,但是原可视化并没有提供数据,我也懒得真的去统计各个人物之... 查看详情

matlab|可视化|罗密欧与朱丽叶的数据统计(代码片段)

前两天看到了一个非常好看的可视化案例(https://www.reddit.com/r/dataisbeautiful/comments/8ivizh/visualisation_of_words_spoken_between_romeo_and/):继续手痒想绘制一下试试,但是原可视化并没有提供数据,我也懒得真的去统计各个人物之... 查看详情

matlab|绘图复刻|带树状图的环形热图(代码片段)

本期教大家如何绘制带树状图的环状热图,要复刻的图片长这样:复刻效果:需要安装StatisticsandMachineLearningToolbox即统计与机器学习工具箱!!!需要安装StatisticsandMachineLearningToolbox即统计与机器学习工具... 查看详情

matlab|绘图复刻|带树状图的环形热图(代码片段)

本期教大家如何绘制带树状图的环状热图,要复刻的图片长这样:复刻效果:需要安装StatisticsandMachineLearningToolbox即统计与机器学习工具箱!!!需要安装StatisticsandMachineLearningToolbox即统计与机器学习工具... 查看详情