ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:130.02KB ,
资源ID:24035908      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24035908.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用matlab绘制矩阵色块图.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用matlab绘制矩阵色块图.docx

1、利用matlab绘制矩阵色块图R语言中有一个根据实值矩阵绘制色块图的程序用于绘制相关系数矩阵图,可以用丰富的颜色和形状形象的展示矩阵元素值的大小。遗憾的是MATLAB中没有这样的函数,因此我就用MATLAB编写了一个matrixplot函数,下面给出示例和源码,与大家一起分享!*【例1】绘制网格线,网格中显示矩阵元素。显示黑色文字: -0.5,0.2,-0.3,0.7,1; XVarNames = xiezhh,heping,keda,tust,tianjin; matrixplot(x,FillStyle,nofill,XVarNames,XVarNames,YVarNames,XVarNa

2、mes);效果图1:根据矩阵元素值自动设置文字颜色: matrixplot(x,FillStyle,nofill,XVarNames,XVarNames,YVarNames,XVarNames,TextColor,Auto,ColorBar,on);效果图2: 【例2】绘制实值矩阵各元素对应的色块,通过不同的“参数/参数值控制色块的形状、大小、颜色等属性。 方形色块,充满方格,灰白色字体 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,TextColor,0.6,0.6,0.6,ColorBar,on);效果图3: 方形色块,根据矩阵元

3、素值自动确定色块的大小和颜色,不显示字体 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,off,FigSize,Auto,ColorBar,on);效果图4: 椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,off,FigSize,Auto,ColorBar,on,FigShape,e);效果图5: 圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式

4、显示 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,off,FigSize,Auto,ColorBar,on,FigShape,c,FigStyle,Triu);效果图6: 六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,on,FigSize,Auto,ColorBar,on,FigShape,h,FigStyle,Tril);效果图7: 表盘形色块,根据矩

5、阵元素值自动确定色块的颜色,不显示字体 matrixplot(x,XVarNames,XVarNames,YVarNames,XVarNames,DisplayOpt,off,FigSize,Full,ColorBar,on,FigShape,d);效果图8: 【例3】读取真彩图片,绘制伪红外图。 I = double(imread(kids.tif); matrixplot(I,DisplayOpt,off,colorbar,on,grid,off);效果图9: 最后贴上matrixplot函数的源码,源码中有详细的调用格式与参数说明,感兴趣的版友可以通过设置不同参数,做出更为精彩的图形,希

6、望大家喜欢!function matrixplot(data,varargin)% 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。% matrixplot(data) 绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色% 块颜色由元素值大小决定。% matrixplot(data, PARAM1,val1, PARAM2,val2, .) % 用成对出现的参数名/参数值控制色块的各项属性。可用的参数名/参数值如下:% FigShape - 设定色块的形状,其参数值为:% Square - 方形默认% Circle - 圆形% Ellipse - 椭圆形% H

7、exagon - 六边形% Dial - 表盘形% FigSize - 设定色块的大小,其参数值为:% Full - 最大色块默认% Auto - 根据矩阵元素值自动确定色块大小% FigStyle - 设定矩阵图样式,其参数值为:% Auto - 矩形矩阵图默认% Tril - 下三角矩阵图% Triu - 上三角矩阵图% FillStyle - 设定色块填充样式,其参数值为:% Fill - 填充色块内部默认% NoFill - 不填充色块内部% DisplayOpt - 设定是否在色块中显示矩阵元素值,其参数值为:% On - 显示矩阵元素值默认% Off - 不显示矩阵元素值% Tex

8、tColor - 设定文字的颜色,其参数值为:% 表示单色的字符r,g,b,y,m,c,w,k,默认为黑色% 1行3列的红、绿、蓝三元色灰度值向量r,g,b% Auto - 根据矩阵元素值自动确定文字颜色% XVarNames - 设定X轴方向需要显示的变量名默认为X1,X2,.,其参数值为:% 字符串矩阵或字符串元胞数组,假如为字符串矩阵,其行数应与data的列数一样% 假如为字符串元胞数组,其长度应与data的列数一样。% YVarNames - 设定Y轴方向需要显示的变量名默认为Y1,Y2,.,其参数值为:% 字符串矩阵或字符串元胞数组,假如为字符串矩阵,其行数应与data的行数一样%

9、假如为字符串元胞数组,其长度应与data的行数一样。% ColorBar - 设定是否显示颜色条,其参数值为:% On - 显示颜色条% Off - 不显示颜色条默认% Grid - 设定是否显示网格线,其参数值为:% On - 显示网格线默认% Off - 不显示网格线% Example:% x = 1,-0.2,0.3,0.8,-0.5% -0.2,1,0.6,-0.7,0.2% 0.3,0.6,1,0.5,-0.3% 0.8,-0.7,0.5,1,0.7% -0.5,0.2,-0.3,0.7,1;% matrixplot(x);% matrixplot(x,DisplayOpt,off)

10、;% matrixplot(x,FillStyle,nofill,TextColor,Auto);% matrixplot(x,TextColor,0.7,0.7,0.7,FigShap,s,FigSize,Auto,ColorBar,on);% matrixplot(x,TextColor,k,FigShap,d,FigSize,Full,ColorBar,on,FigStyle,Triu);% XVarNames = xiezhh,heping,keda,tust,tianjin;% matrixplot(x,FigShap,e,FigSize,Auto,ColorBar,on,XVarN

11、ames,XVarNames,YVarNames,XVarNames);% 对第一个输入参数类型进展判断if ismatrix(data) | isreal(data) error(输入参数类型不匹配:第一个输入参数应为实值矩阵);end% 解析成对出现的参数名/参数值FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,XVarNames,. YVarNames,ColorBar,GridOpt = parseInputs(varargin:);% 产生网格数据m,n = size(data);x,y = meshgrid(0:n,

12、0:m);data = data(:);maxdata = nanmax(data);mindata = nanmin(data);rangedata = maxdata - mindata;if isnan(rangedata) warning(MATLAB:warning1,请检查您输入的矩阵是否适宜!); return;endz = zeros(size(x)+0.2;sx = x(1:end-1,1:end-1)+0.5;sy = y(1:end-1,1:end-1)+0.5;if strncmpi(FigStyle,Tril,4) z(triu(ones(size(z),2)0) =

13、 NaN; sx(triu(ones(size(sx),1)0) = NaN;elseif strncmpi(FigStyle,Triu,4) z(tril(ones(size(z),-2)0) = NaN; sx(tril(ones(size(sx),-1)0) = NaN;endsx = sx(:);sy = sy(:);id = isnan(sx) | isnan(data);sx(id) = ;sy(id) = ;data(id) = ;if isempty(XVarNames) XVarNames = strcat(X,cellstr(num2str(1:n);else if (is

14、cell(XVarNames) & (numel(XVarNames) = n) | (iscell(XVarNames) & (size(XVarNames,1) = n) error(X轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的列数一样); endendif isempty(YVarNames) YVarNames = strcat(Y,cellstr(num2str(1:m);else if (iscell(YVarNames) & (numel(YVarNames) = m) | (iscell(YVarNames) & (size(YVarNames,1) = m

15、) error(Y轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的行数一样); endend% 绘图figure(color,w,. units,normalized,. pos,0.289165,0.154948,0.409956,0.68099);axes(units,normalized,pos,0.1,0.022,0.89,0.85);if strncmpi(GridOpt,On,2) mesh(x,y,z,. EdgeColor,0.7,0.7,0.7,. FaceAlpha,0,. LineWidth,1); % 参考网格线endhold on;axis equal;

16、axis(-0.1,n+0.1,-0.1,m+0.1,-0.5,0.5);view(2);% 设置X轴和Y轴刻度位置与标签set(gca,Xtick,(1:n)-0.5,. XtickLabel,XVarNames,. Ytick,(1:m)-0.5,. YtickLabel,YVarNames,. XAxisLocation,top,. YDir,reverse,. Xcolor,0.7,0.7,0.7,. Ycolor,0.7,0.7,0.7,. TickLength,0,0);axis off% 绘制填充色块if strncmpi(FillStyle,Fill,3) MyPatch(sx

17、,sy,data,FigShape,FigSize);end% 显示数值文本信息if strncmpi(DisplayOpt,On,2) str = num2str(data,%4.2f); scale = 0.1*max(n/m,1)/(max(m,n)0.55); if strncmpi(TextColor,Auto,3) ColorMat = get(gcf,ColorMap); nc = size(ColorMat,1); cid = fix(mapminmax(data,0,1)*nc)+1; cid(cidnc) = nc; TextColor = ColorMat(cid,:);

18、 for i = 1:numel(data) text(sx(i),sy(i),0.1,str(i,:),. FontUnits,normalized,. FontSize,scale,. fontweight,bold,. HorizontalAlignment,center,. Color,TextColor(i,:); end else text(sx,sy,0.1*ones(size(sx),str,. FontUnits,normalized,. FontSize,scale,. fontweight,bold,. HorizontalAlignment,center,. Color

19、,TextColor); endend% 设置X轴和Y轴刻度标签的缩进方式MyTickLabel(gca,FigStyle);% 添加颜色条if strncmpi(ColorBar,On,2) if any(strncmpi(FigStyle,Auto,Triu,4) colorbar(Location,EastOutside); else colorbar(Location,SouthOutside); endendend% -% 调整坐标轴刻度标签子函数% -function MyTickLabel(ha,tag)% 根据显示X围自动调整坐标轴刻度标签的函数% ha 坐标系句柄值% tag

20、 调整坐标轴刻度标签的标识字符串,可用取值如下:% Auto - 将x轴刻度标签旋转90度,y轴刻度标签不作调整% Tril - 将x轴刻度标签旋转90度,并依次缩进,y轴刻度标签不作调整% Triu - 将x轴刻度标签旋转90度,y轴刻度标签依次缩进% Example:% MyTickLabel(gca,Tril);%if ishandle(ha) warning(MATLAB:warning2,第一个输入参数应为坐标系句柄); return;endif strcmpi(get(ha,type),axes) warning(MATLAB:warning3,第一个输入参数应为坐标系句柄); r

21、eturn;endaxes(ha);xstr = get(ha,XTickLabel);xtick = get(ha,XTick);xl = xlim(ha);ystr = get(ha,YTickLabel);ytick = get(ha,YTick);yl = ylim(ha);set(ha,XTickLabel,YTickLabel,);x = zeros(size(ytick) + xl(1) - range(xl)/30;y = zeros(size(xtick) + yl(1) - range(yl)/70;nx = numel(xtick);ny = numel(ytick);i

22、f strncmpi(tag,Tril,4) y = y + (1:nx) - 1;elseif strncmpi(tag,Triu,4) x = x + (1:ny) - 1;endtext(xtick,y,xstr,. rotation,90,. Interpreter,none,. color,r,. HorizontalAlignment,left);text(x,ytick,ystr,. Interpreter,none,. color,r,. HorizontalAlignment,right);end% -% 根据散点数据绘制3维色块图子函数% -function MyPatch

23、(x,y,z,FigShape,FigSize)% 根据散点数据绘制3维色块图% MyPatch(x,y,z,FigShape,FigSize) x,y,z是实值数组,用来指定色块中心点三维% 坐标。FigShape是字符串变量,用来指定色块形状。% FigSize是字符串变量,用来指定色块大小。% CopyRight:xiezhh谢中华, 2013.01 编写% Example:% x = rand(10,1);% y = rand(10,1);% z = rand(10,1);% MyPatch(x,y,z,s,Auto);% 输入参数类型判断if nargin 3 error(至少需要三

24、个输入参数);endif isreal(x) | isreal(y) | isreal(z) error(前三个输入应为实值数组);endn = numel(z);if numel(x) = n | numel(y) = n error(坐标应等长);endif strncmpi(FigSize,Auto,3) & strncmpi(FigShape,Ellipse,1) id = (z = 0); x(id) = ; y(id) = ; z(id) = ;endif isempty(z) return;end% 求色块顶点坐标rab1 = ones(size(z);maxz = max(ab

25、s(z);if maxz = 0 maxz = 1;endrab2 = abs(z)/maxz;if strncmpi(FigShape,Square,1) % 方形 if strncmpi(FigSize,Full,3) r = rab1; else r = sqrt(rab2); end SquareVertices(x,y,z,r);elseif strncmpi(FigShape,Circle,1) % 圆形 if strncmpi(FigSize,Full,3) r = 0.5*rab1; else r = 0.5*sqrt(rab2); end CircleVertices(x,y,z,r);elseif strncmpi(FigShape,Ellipse,1) % 椭圆形 a = 0.48 + rab2*(0.57-0.48)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1