Matlab绘图高级部分

图形是呈现数据的一种直观方式,在用Matlab进行数据处理和计算后,我们一般都会以图形的形式将结果呈现出来。尤其在论文的撰写中,优雅的图形无疑会为文章加分。本篇文章非完全原创,我的工作就是把见到的Matlab绘图代码收集起来重新跑一遍,修改局部错误,然后将所有的图贴上来供大家参考。大家可以先看图,有看中的可以直接把代码Copy过去改成自己想要的。

<br>%% 直方图图的绘制%直方图有两种图型:垂直直方图和水平直方图。而每种图型又有两种表现模式:累计式:分组式。figure;z=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]; % 各因素的相对贡献份额colormap(cool);% 控制图的用色subplot(2,3,1);bar(z);%二维分组式直方图,默认的为'group'title('2D default');subplot(2,3,2);bar3(z);%三维的分组式直方图title('3D default');subplot(2,3,3);barh(z,1);%分组式水平直方图,宽度设置为1title('vert width=1');subplot(2,3,4);bar(z,'stack');%累计式直方图,例如:1,1+2,1+2+3构成了第一个bartitle('stack')subplot(2,3,5);bar3h(z,0.5,'stacked');%三维累计式水平直方图title('vert width=1 stack');subplot(2,3,6);bar3(z,0.8,'grouped');%对相关数据的颜色进行分组,默认的位'group'title('width=0.8 grouped');1234567891011121314151617181920212223
%% =========柱状图的进阶==========figure;y=[300 311;390 425; 312 321; 250 185; 550 535; 420 432; 410 520;];subplot(1,3,1);b=bar(y);grid on;set(gca,'XTickLabel',{'0','1','2','3','4','5','6'})legend('算法1','算法2');xlabel('x axis');ylabel('y axis');%使仅有的一组柱状图呈现不同颜色,默认的位相同颜色data = [1.0, 1.0, 0.565, 0.508, 0.481, 0.745];subplot(1,3,2);b = bar(data);ch = get(b,'children');set(ch,'FaceVertexCData',[4;2;3;1;5;6]);%使用Indexed形式指定每组bar的颜色set(gca,'XTickLabel',{'C0','C1','C2','C3','C4','C5'})axis([0 7 0.0 1.0]);ylabel('micro F-measure');%使每个bar颜色不同,默认的是每个元素在不同组的颜色相同data = [3, 7, 5, 2;4, 3, 2, 9;6, 6, 1, 4];subplot(1,3,3);b = bar(data);ch = get(b,'children');set(ch{1},'FaceVertexCData',[1;2;3]);%设置第一个元素在不同组的颜色set(ch{2},'FaceVertexCData',[1;2;3]);%设置第二个元素在不同组的颜色set(ch{3},'FaceVertexCData',[1;2;3]);set(ch{4},'FaceVertexCData',[1;2;3]);12345678910111213141516171819202122232425262728

%% 彩色柱状图
%用到的数据
n = 8;
Z = rand(n,1);
figure;
%默认图片
subplot(1,3,1);
bar(Z);
%简单的Matlab作图
% 这个图根据数据列中值的大小着色。每列中的值越大,颜色越突出
subplot(1,3,2);
h=bar(Z);
colormap(summer(n));
ch = get(h,‘Children’);
fvd = get(ch,‘Faces’);%针对矩阵时,只能用fvd=get(ch{col},‘Faces’),下同
fvcd = get(ch,‘FaceVertexCData’);
[~, izs] = sortrows(Z,1);
for i = 1:n
row = izs(i);
fvcd(fvd(row,:)) = i;
end
set(ch,‘FaceVertexCData’,fvcd)
%图片会以渐变的方式着色,效果非常不错
subplot(1,3,3);
h=bar(Z);
ch = get(h,‘Children’);
fvd = get(ch,‘Faces’);
fvcd = get(ch,‘FaceVertexCData’);
[zs, izs] = sortrows(Z,1);
k = 128; % 准备生成128 3 行的colormap
colormap(summer(k)); % 这样会产生一个128 * 3的矩阵,分别代表[R G B]的值
% 检视数据
whos ch fvd fvcd zs izs
% Name Size Bytes Class Attributes
%
% ch 1x1 8 double
% fvcd 66x1 528 double
% fvd 13x4 416 double
% izs 13x1 104 double
% zs 13x1 104 double
%
shading interp % Needed to graduate colors
for i = 1:n
color = floor(k
i/n); % 这里用取整函数获得color在colormap中行
row = izs(i); % Look up actual row # in data
fvcd(fvd(row,1)) = 1; % Color base vertices 1st index
fvcd(fvd(row,4)) = 1;
fvcd(fvd(row,2)) = color; % Assign top vertices color
fvcd(fvd(row,3)) = color;
end
set(ch,‘FaceVertexCData’, fvcd); % Apply the vertex coloring
set(ch,‘EdgeColor’,‘k’);

%% 绘制统计直方图%hist(y):如果y是向量,则把其中元素放入10个条目中,且返回每条中的元素的个数;如果y为矩阵,则分别对每列进行处理,显示多组条形。%[n,xout]=hist(y,x):非递减向量x的指定bin的中心。向量xout包含频率计数与条目的位置。x=-10:.1:10;y1=randn(2008,1);y2=randn(2008,3);figure;colormap(winter);subplot(2,2,1);hist(y1);%把其中元素放入10个条目中title('y1为向量,default,n=10');subplot(2,2,2);hist(y2);%分别对每列进行处理,显示多组条形title('y2为矩阵');subplot(2,2,3);hist(y1,x);%用户也可以使用[n,xout]=hist(y1,x);bar(xout,n)绘制条形直方图title('向量x指定条目');subplot(2,2,4);hist(y2,1000);%第二个参数为标量时指定bin的数目title('nbins=1000');1234567891011121314151617181920
%% ========均值方差直方图========a=[8 9 10 7 8 9];%meanb=[1 1 1 1 1 1];%stdfigure();h=bar(a);ch=get(h,'children');set(ch,'FaceVertexCData',[4;2;3;1;5;6]);%使用Indexed形式指定每组bar的颜色hold on;errorbar(a,b,'k','LineStyle','none');123456789
%% =======散点图scatter , scatter3 , plotmatrix======%scatter3(X,Y,Z,S,C):在由向量X、Y和Z指定的位置显示大小和颜色分别由S和C决定的离散点figure;[x,y,z] = sphere(16);X = [x(:)*.5 x(:)*.75 x(:)];Y = [y(:)*.5 y(:)*.75 y(:)];Z = [z(:)*.5 z(:)*.75 z(:)];S = repmat([10 2 5]*10,numel(x),1);C = repmat([1 2 3],numel(x),1);subplot(1,2,1);scatter(X(:),Y(:),S(:),C(:));title('scatter');subplot(1,2,2);scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60);title('scatter3');%plotmatrix(X,Y)绘出X(p*M)与Y(p*N)的列组成的散度图(N,M)figure;X=randn(100,2);Y=randn(100,2); subplot(1,3,1),plotmatrix(X);%等价于plotmatrix(X,X),除了对角上的图为X每一列的直方图hist(X(:,col))title('plotmatrix(X)');subplot(1,3,2),plotmatrix(X,X);title('plotmatrix(X,X)');subplot(1,3,3),plotmatrix(X,Y);title('plotmatrix(X,Y)');123456789101112131415161718192021222324
%% ======切片图和切片等位线图=======%利用 slice 和 contourslice 表现 MATLAB 提供的无限大水体中水下射流速度数据 flow 。 flow 是一组定义在三维空间上的函数数据。%在本例中,从图中的色标尺可知,深红色表示“正速度”(向图的左方),深蓝表示“负速度”(向图的右方)。% 以下指令用切面上的色彩表现射流速度[X,Y,Z,V]=flow; % 取 4 个 的射流数据矩阵, V 是射流速度。x1=min(min(min(X)));x2=max(max(max(X))); % 取 x 坐标上下限y1=min(min(min(Y)));y2=max(max(max(Y))); % 取 y 坐标上下限z1=min(min(min(Z)));z2=max(max(max(Z))); % 取 z 坐标上下限sx=linspace(x1+1.2,x2,5); % 确定 5 个垂直 x 轴的切面坐标sy=0; % 在 y=0 处,取垂直 y 轴的切面sz=0; % 在 z=0 处,取垂直 z 轴的切面figure;slice(X,Y,Z,V,sx,sy,sz); % 画切片图view([-12,30]);shading interp;colormap jet;axis off;colorbar;% 以下指令用等位线表现射流速度v1=min(min(min(V)));v2=max(max(max(V))); % 射流速度上下限cv=linspace(v1,v2,15); % 在射流上下限之间取 15 条等位线figure;contourslice(X,Y,Z,V,sx,sy,sz,cv);view([-12,30]);colormap jet;colorbar;box on;1234567891011121314151617181920
(0)

相关推荐

  • python+opencv图像处理(十四)

    图像直方图 1.灰度图像的直方图 灰度图像的直方图是灰度级和这种灰度级的概率之间关系的图形. 直接看图,下图中左侧是原图,右图为其直方图. 完整代码如下: import cv2 as cv impor ...

  • 【精品博文】直方图均衡及其FPGA实现

    毕业设计要设计一块刚挠结合板,准备设计8层,前段时间天天原理图.layout,身心疲惫啊,给自己放了10天假,回来继续原理图.layout. 之前写过直方图均衡的matlab和Verilog代码,最近 ...

  • 【精品博文】建立灰度直方图

    (1)基本概念 如果将图像中像素的灰度级别看作是一个随记变量(概率论中学到的随记变量,对后续直方图均匀化的推到至关重要),则其分布的情况就可以用概率密度函数(PDF)来刻画和描述,即表现为灰度直方图( ...

  • phython+opencv图像处理

    做了两天的直方图均衡,还差一点点,先把前面的发布出来,后面的再慢慢来吧 . 直方图均衡主要是用于增强动态范围偏小的图像. 它的基本思想是把原始图像的直方图变换为在整个灰度范围内均匀分布的形式,这样可以 ...

  • python+opencv图像处理(十五)

    直方图均衡 直方图均衡化是通过对图像的直方图进行修正来获得图像增强效果的方法,主要是进行对比度增强,就是让亮的更亮,暗的更亮. 1.灰度图像的直方图均衡 先上图看效果. 如图上标题所示,第一张是原图, ...

  • 基于OpenCV的图像强度操作

    重磅干货,第一时间送达 01. 什么是图像强度操作 更改任何通道中的像素值 对图像的数学运算 亮度变化 对比度变化 伽玛操纵 直方图均衡 图像预处理中的滤波等增强 使用OpenCV加载图像 impor ...

  • Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 # -- coding: utf-8 -- imp ...

  • 频域图像增强-锐化

    图像增强技术根据增强处理过程所在的空间不同,可分为基于频域的算法和基于空域的算法两大类.基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法,把图像看成一种二维信号 ...

  • 在 Google Colab 中使用 OpenCV 进行图像处理简介

    重磅干货,第一时间送达 在这篇文章中,我们将实现如何使用 OpenCV 在 google colaboratory 中进行图像处理.为此,我们应该了解一些 Python 基础知识,下面给出的步骤将帮助 ...

  • MatLab绘图

    作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维.三维图形函数.由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面方便又高效. 一般来说,一个命令行输入一条 ...

  • MATLAB科研绘图进阶方案 | colorplot函数

    图图本次提供全新的MATLAB绘图方案--基于MATLAB/plot定制的cplot函数,后续也将集成在FigureBestGUI中. 1. 一组样图 注:以上样式均经过"FigureBes ...

  • Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介、应用之详细攻略——daidingdaiding

    Dataset:机器学习和深度学习中对数据集进行高级绘图(数据集可视化,箱线图等)的简介.应用之详细攻略--daidingdaiding 箱线图 箱线图(box plots):这些图显示了一个小长方形 ...

  • 想要订制高级西装选这些准没错 世界顶级五大西装面料品牌

    说到顶级西装品牌,大家能想到的品牌可能来自世界各地,例如美国.英国.意大利.但你知道世界顶级五大西装面料品牌都是来自于欧洲,欧洲工业化的蓬勃发展为西装面料的研究开发和发展提供了强有力的技术和平台,欧洲 ...

  • 5种人员分析的高级方法

    之前已经给出了多个示例,说明员工如何从数据分析中受益,本文我想探索一组不同的高级数据分析技术,以了解如何将其用于分析人员数据以提高组织的成功率. 数据科学越来越多地融入企业,产品和整个社会,事例变得越 ...

  • 一个活得高级的女人,一般都有这几个特征

    2021-04-23小小筑乔木 文/乔木 生活中有一种女人,你会发现她无惧婚姻的危机,更不怕生活的风风雨雨. 对于有的女人来说,不管自己的婚姻是怎样的状态,家庭都只是锦上添花的事,离婚也只是让自己,回 ...

  • 【免费PPT制作教程】PPT超详细教程合集,PPT高级设计制作教程,PPT高级动画教程(点赞收藏,长...

    【免费PPT制作教程】PPT超详细教程合集,PPT高级设计制作教程,PPT高级动画教程(点赞收藏,长...

  • UC头条:出现这4个迹象, 说明你的人生正在变得越来越高级……

    "雄鹰翱翔天际,山河大地尽收眼底:青蛙坐井观天,它看到的天空只有井口那么大."眼界,是一个人把握世界的宽度和广度.眼界不一样,注定生活的方式也会大不一样.狮子在整个草原上驰骋猎杀, ...

  • 宋佳就是敢穿,针织背心配鱼尾裙高级洋气,“括号臀”太迷人

    热播剧<小舍得>的播出让大家又一次被宋佳的演技所折服,除了精湛的演技之外,小姐姐在剧中的穿搭也被很多人种草,利落又干练,简直太有范了,在生活中宋佳也是个绝对的时髦精,身材上的优势和优越的好 ...