利用matlab绘制矩阵色块图Word文档格式.docx
- 文档编号:21220847
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:16
- 大小:130.38KB
利用matlab绘制矩阵色块图Word文档格式.docx
《利用matlab绘制矩阵色块图Word文档格式.docx》由会员分享,可在线阅读,更多相关《利用matlab绘制矩阵色块图Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
方形色块,充满方格,灰白色字体
[0.6,0.6,0.6],'
效果图3:
方形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体
DisplayOpt'
off'
FigSize'
效果图4:
椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体
FigShape'
e'
效果图5:
圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示
c'
FigStyle'
Triu'
效果图6:
六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示
h'
Tril'
效果图7:
表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体
Full'
d'
效果图8:
【例3】读取真彩图片,绘制伪红外图。
I=double(imread('
kids.tif'
));
matrixplot(I,'
colorbar'
grid'
效果图9:
最后贴上matrixplot函数的源码,源码中有详细的调用格式及参数说明,感兴趣的版友可以通过设置不同参数,做出更为精彩的图形,希望大家喜欢!
functionmatrixplot(data,varargin)
%
根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。
%
matrixplot(data)绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色
块颜色由元素值大小决定。
matrixplot(data,'
PARAM1'
val1,'
PARAM2'
val2,...)
用成对出现的参数名/参数值控制色块的各项属性。
可用的参数名/参数值如下:
'
---设定色块的形状,其参数值为:
Square'
---方形(默认)
Circle'
---圆形
Ellipse'
---椭圆形
Hexagon'
---六边形
Dial'
---表盘形
---设定色块的大小,其参数值为:
---最大色块(默认)
---根据矩阵元素值自动确定色块大小
---设定矩阵图样式,其参数值为:
---矩形矩阵图(默认)
---下三角矩阵图
---上三角矩阵图
---设定色块填充样式,其参数值为:
Fill'
---填充色块内部(默认)
NoFill'
---不填充色块内部
---设定是否在色块中显示矩阵元素值,其参数值为:
On'
---显示矩阵元素值(默认)
Off'
---不显示矩阵元素值
---设定文字的颜色,其参数值为:
表示单色的字符('
r'
g'
b'
y'
m'
w'
k'
),默认为黑色
1行3列的红、绿、蓝三元色灰度值向量([r,g,b])
---根据矩阵元素值自动确定文字颜色
---设定X轴方向需要显示的变量名(默认为X1,X2,...),其参数值为:
字符串矩阵或字符串元胞数组,若为字符串矩阵,其行数应与data的列数相同
若为字符串元胞数组,其长度应与data的列数相同。
---设定Y轴方向需要显示的变量名(默认为Y1,Y2,...),其参数值为:
字符串矩阵或字符串元胞数组,若为字符串矩阵,其行数应与data的行数相同
若为字符串元胞数组,其长度应与data的行数相同。
---设定是否显示颜色条,其参数值为:
---显示颜色条
---不显示颜色条(默认)
Grid'
---设定是否显示网格线,其参数值为:
---显示网格线(默认)
---不显示网格线
Example:
matrixplot(x);
[0.7,0.7,0.7],'
FigShap'
s'
CopyRight:
xiezhh(谢中华),2013.01.24编写
%对第一个输入参数类型进行判断
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,0:
m);
data=data(:
maxdata=nanmax(data);
mindata=nanmin(data);
rangedata=maxdata-mindata;
ifisnan(rangedata)
warning('
MATLAB:
warning1'
请检查您输入的矩阵是否合适!
'
return;
z=zeros(size(x))+0.2;
sx=x(1:
end-1,1:
end-1)+0.5;
sy=y(1:
ifstrncmpi(FigStyle,'
4)
z(triu(ones(size(z)),2)>
0)=NaN;
sx(triu(ones(size(sx)),1)>
elseifstrncmpi(FigStyle,'
z(tril(ones(size(z)),-2)>
sx(tril(ones(size(sx)),-1)>
sx=sx(:
sy=sy(:
id=isnan(sx)|isnan(data);
sx(id)=[];
sy(id)=[];
data(id)=[];
ifisempty(XVarNames)
XVarNames=strcat('
X'
cellstr(num2str((1:
n)'
)));
else
if(iscell(XVarNames)&
&
(numel(XVarNames)~=n))||(~iscell(XVarNames)&
(size(XVarNames,1)~=n))
X轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的列数相同'
end
ifisempty(YVarNames)
YVarNames=strcat('
Y'
m)'
if(iscell(YVarNames)&
(numel(YVarNames)~=m))||(~iscell(YVarNames)&
(size(YVarNames,1)~=m))
Y轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的行数相同'
%绘图
figure('
color'
...
units'
normalized'
pos'
[0.289165,0.154948,0.409956,0.68099]);
axes('
[0.1,0.022,0.89,0.85]);
ifstrncmpi(GridOpt,'
2)
mesh(x,y,z,...
EdgeColor'
[0.7,0.7,0.7],...
FaceAlpha'
0,...
LineWidth'
1);
%参考网格线
holdon;
axisequal;
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'
m)-0.5,...
YtickLabel'
YVarNames,...
XAxisLocation'
top'
YDir'
reverse'
Xcolor'
Ycolor'
TickLength'
[0,0]);
axisoff
%绘制填充色块
ifstrncmpi(FillStyle,'
3)
MyPatch(sx'
sy'
data'
FigShape,FigSize);
%显示数值文本信息
ifstrncmpi(DisplayOpt,'
str=num2str(data,'
%4.2f'
scale=0.1*max(n/m,1)/(max(m,n)^0.55);
ifstrncmpi(TextColor,'
ColorMat=get(gcf,'
ColorMap'
nc=size(ColorMat,1);
cid=fix(mapminmax(data'
0,1)*nc)+1;
cid(cid<
1)=1;
cid(cid>
nc)=nc;
TextColor=ColorMat(cid,:
fori=1:
numel(data)
text(sx(i),sy(i),0.1,str(i,:
),...
FontUnits'
FontSize'
scale,...
fontweight'
bold'
HorizontalAlignment'
center'
Color'
TextColor(i,:
else
text(sx,sy,0.1*ones(size(sx)),str,...
TextColor);
%设置X轴和Y轴刻度标签的缩进方式
MyTickLabel(gca,FigStyle);
%添加颜色条
ifstrncmpi(ColorBar,'
ifany(strncmpi(FigStyle,{'
},4))
colorbar('
Location'
EastOutside'
SouthOutside'
%---------------------------------------------------
调整坐标轴刻度标签子函数
functionMyTickLabel(ha,tag)
根据显示范围自动调整坐标轴刻度标签的函数
ha
坐标系句柄值
tag
调整坐标轴刻度标签的标识字符串,可用取值如下:
---将x轴刻度标签旋转90度,y轴刻度标签不作调整
---将x轴刻度标签旋转90度,并依次缩进,y轴刻度标签不作调整
---将x轴刻度标签旋转90度,y轴刻度标签依次缩进
MyTickLabel(gca,'
xiezhh(谢中华),2013.1编写
if~ishandle(ha)
warning2'
第一个输入参数应为坐标系句柄'
if~strcmpi(get(ha,'
type'
),'
axes'
)
warning3'
axes(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,'
[],'
[]);
x=zeros(size(ytick))+xl
(1)-range(xl)/30;
y=zeros(size(xtick))+yl
(1)-range(yl)/70;
nx=numel(xtick);
ny=numel(ytick);
ifstrncmpi(tag,'
y=y+(1:
nx)-1;
elseifstrncmpi(tag,'
x=x+(1:
ny)-1;
text(xtick,y,xstr,...
rotation'
90,...
Interpreter'
none'
left'
text(x,ytick,ystr,...
right'
根据散点数据绘制3维色块图子函数
function
MyPatch(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,'
%输入参数类型判断
ifnargin<
3
至少需要三个输入参数'
if~isreal(x)||~isreal(y)||~isreal(z)
前三个输入应为实值数组'
n=numel(z);
ifnumel(x)~=n||numel(y)~=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 matlab 绘制 矩阵 色块图