matlab绘制矩阵色块图
本文转载于https://blog.csdn.net/zzx2016zzx/article/details/80635840
文章目录
- 1、绘制网格线,网格中显示矩阵元素,显示黑色文字。
- 2、根据矩阵元素值自动设置文字颜色
- 3 绘制绘制实值矩阵各元素对应的色块,通过不同的“参数/参数值”控制色块的形状、大小、颜色等属性。
- 4、方形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体。
- 5、椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体。
- 6、圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示
- 7、六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示
- 8、表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体
- 9 matrixplot函数的源码
在R语言中有根据矩阵绘制色块图的程序,可以用于绘制相关系数矩阵图,用丰富的颜色和形状形象的展示矩阵元素值的大小。今天介绍的是如何用matlab绘制矩阵色块图。
1、绘制网格线,网格中显示矩阵元素,显示黑色文字。
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames);
效果图如下:
2、根据矩阵元素值自动设置文字颜色
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'FillStyle','nofill','XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor','Auto','ColorBar','on');
效果图如下:
3 绘制绘制实值矩阵各元素对应的色块,通过不同的“参数/参数值”控制色块的形状、大小、颜色等属性。
方形色块,充满方格,灰白色字体。
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'TextColor',[0.6,0.6,0.6],'ColorBar','on');
效果图如下:
4、方形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体。
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on');
效果图如下:
5、椭圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体。
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','e');
效果图如下:
6、圆形色块,根据矩阵元素值自动确定色块的大小和颜色,不显示字体,上三角形式显示
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Auto','ColorBar','on','FigShape','c','FigStyle','Triu');
效果图如下:
7、六边形色块,根据矩阵元素值自动确定色块的大小和颜色,显示字体,下三角形式显示
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','on','FigSize','Auto','ColorBar','on','FigShape','h','FigStyle','Tril');
8、表盘形色块,根据矩阵元素值自动确定色块的颜色,不显示字体
x = [1.0000 0.1302 0.0582 0.0169 0.0779 0.0833 -0.03130.1302 1.0000 0.0482 0.3843 0.2105 -0.2500 0.08030.0582 0.0482 1.0000 0.0481 0.3515 -0.0426 0.05740.0169 0.3843 0.0481 1.0000 -0.1819 -0.3554 -0.00200.0779 0.2105 0.3515 -0.1819 1.0000 0.0388 0.01860.0833 -0.2500 -0.0426 -0.3554 0.0388 1.0000 -0.1853-0.0313 0.0803 0.0574 -0.0020 0.0186 -0.1853 1.0000];
XVarNames = {'Sleep','Age','Sex','Rel','Psy','Ner','Cha'};
matrixplot(x,'XVarNames',XVarNames,'YVarNames',XVarNames,'DisplayOpt','off','FigSize','Full','ColorBar','on','FigShape','d');
9 matrixplot函数的源码
最后贴上matrixplot函数的源码,源码中有详细的调用格式及参数说明,可以通过设置不同参数。感兴趣的朋友可以自己设置不同的参数。
function matrixplot(data,varargin)
% 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小。
%
% matrixplot(data) 绘制矩阵色块图,data为实值矩阵,每一个元素对应一个色块,色
% 块颜色由元素值大小决定。
%
% matrixplot(data, 'PARAM1',val1, 'PARAM2',val2, ...)
% 用成对出现的参数名/参数值控制色块的各项属性。可用的参数名/参数值如下:
% 'FigShape' --- 设定色块的形状,其参数值为:
% 'Square' --- 方形(默认)
% 'Circle' --- 圆形
% 'Ellipse' --- 椭圆形
% 'Hexagon' --- 六边形
% 'Dial' --- 表盘形
%
% 'FigSize' --- 设定色块的大小,其参数值为:
% 'Full' --- 最大色块(默认)
% 'Auto' --- 根据矩阵元素值自动确定色块大小
%
% 'FigStyle' --- 设定矩阵图样式,其参数值为:
% 'Auto' --- 矩形矩阵图(默认)
% 'Tril' --- 下三角矩阵图
% 'Triu' --- 上三角矩阵图
%
% 'FillStyle' --- 设定色块填充样式,其参数值为:
% 'Fill' --- 填充色块内部(默认)
% 'NoFill' --- 不填充色块内部
%
% 'DisplayOpt' --- 设定是否在色块中显示矩阵元素值,其参数值为:
% 'On' --- 显示矩阵元素值(默认)
% 'Off' --- 不显示矩阵元素值
%
% 'TextColor' --- 设定文字的颜色,其参数值为:
% 表示单色的字符('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的行数相同
% 若为字符串元胞数组,其长度应与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');
% 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','XVarNames',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,0:m);
data = data(:);
maxdata = nanmax(data);
mindata = nanmin(data);
rangedata = maxdata - mindata;
if isnan(rangedata)warning('MATLAB:warning1','请检查您输入的矩阵是否合适!');return;
end
z = 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) = 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;
end
sx = sx(:);
sy = sy(:);
id = isnan(sx) | isnan(data);
sx(id) = [];
sy(id) = [];
data(id) = [];if isempty(XVarNames)XVarNames = strcat('X',cellstr(num2str((1:n)')));
elseif (iscell(XVarNames) && (numel(XVarNames) ~= n)) || (~iscell(XVarNames) && (size(XVarNames,1) ~= n))error('X轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的列数相同');end
end
if isempty(YVarNames)YVarNames = strcat('Y',cellstr(num2str((1:m)')));
elseif (iscell(YVarNames) && (numel(YVarNames) ~= m)) || (~iscell(YVarNames) && (size(YVarNames,1) ~= m))error('Y轴方向变量名应为字符串矩阵或字符串元胞数组,其长度与输入矩阵的行数相同');end
end% 绘图
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); % 参考网格线
end
hold on;
axis equal;
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',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(cid<1) = 1;cid(cid>nc) = nc;TextColor = ColorMat(cid,:);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,:));endelsetext(sx,sy,0.1*ones(size(sx)),str,...'FontUnits','normalized',...'FontSize',scale,...'fontweight','bold',...'HorizontalAlignment','center',...'Color',TextColor);end
end% 设置X轴和Y轴刻度标签的缩进方式
MyTickLabel(gca,FigStyle);% 添加颜色条
if strncmpi(ColorBar,'On',2)if any(strncmpi(FigStyle,{'Auto','Triu'},4))colorbar('Location','EastOutside');elsecolorbar('Location','SouthOutside');end
end
end% ---------------------------------------------------
% 调整坐标轴刻度标签子函数
% ---------------------------------------------------
function MyTickLabel(ha,tag)% 根据显示范围自动调整坐标轴刻度标签的函数
% ha 坐标系句柄值
% tag 调整坐标轴刻度标签的标识字符串,可用取值如下:
% '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','第一个输入参数应为坐标系句柄');return;
end
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,'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);if 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(x,y,z,FigShape,FigSize)
% 根据散点数据绘制3维色块图
% MyPatch(x,y,z,FigShape,FigSize) x,y,z是实值数组,用来指定色块中心点三维
% 坐标。FigShape是字符串变量,用来指定色块形状。
% FigSize是字符串变量,用来指定色块大小。
%
% Example:
% x = rand(10,1);
% y = rand(10,1);
% z = rand(10,1);
% MyPatch(x,y,z,'s','Auto');
%% 输入参数类型判断
if nargin < 3error('至少需要三个输入参数');
end
if ~isreal(x) || ~isreal(y) || ~isreal(z)error('前三个输入应为实值数组');
end
n = numel(z);
if numel(x) ~= n || numel(y) ~= nerror('坐标应等长');
end
if strncmpi(FigSize,'Auto',3) && ~strncmpi(FigShape,'Ellipse',1)id = (z == 0);x(id) = [];y(id) = [];z(id) = [];
end
if isempty(z)return;
end
% 求色块顶点坐标
rab1 = ones(size(z));
maxz = max(abs(z));
if maxz == 0maxz = 1;
end
rab2 = abs(z)/maxz;
if strncmpi(FigShape,'Square',1)% 方形if strncmpi(FigSize,'Full',3)r = rab1;elser = sqrt(rab2);endSquareVertices(x,y,z,r);
elseif strncmpi(FigShape,'Circle',1)% 圆形if strncmpi(FigSize,'Full',3)r = 0.5*rab1;elser = 0.5*sqrt(rab2);endCircleVertices(x,y,z,r);
elseif strncmpi(FigShape,'Ellipse',1)% 椭圆形a = 0.48 + rab2*(0.57-0.48);b = (1-rab2).*a;EllipseVertices(x,y,z,a,b);
elseif strncmpi(FigShape,'Hexagon',1)% 六边形if strncmpi(FigSize,'Full',3)r = 0.5*rab1;elser = 0.5*sqrt(rab2);endHexagonVertices(x,y,z,r);
else% 表盘形if strncmpi(FigSize,'Full',3)r = 0.45*rab1;elser = 0.45*sqrt(rab2);endDialVertices(x,y,z,r);
end
end
%--------------------------------------------------
% 求色块顶点坐标并绘制色块的子函数
%--------------------------------------------------
function SquareVertices(x,y,z,r)
% 方形
hx = r/2;
hy = hx;
Xp = [x-hx;x-hx;x+hx;x+hx;x-hx];
Yp = [y-hy;y+hy;y+hy;y-hy;y-hy];
Zp = repmat(z,[5,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
function CircleVertices(x,y,z,r)
% 圆形
t = linspace(0,2*pi,30)';
m = numel(t);
Xp = repmat(x,[m,1])+cos(t)*r;
Yp = repmat(y,[m,1])+sin(t)*r;
Zp = repmat(z,[m,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
function EllipseVertices(x,y,z,a,b)
% 椭圆形
t = linspace(0,2*pi,30)';
m = numel(t);
t0 = -sign(z)*pi/4;
t0 = repmat(t0,[m,1]);
x0 = cos(t)*a;
y0 = sin(t)*b;
Xp = repmat(x,[m,1]) + x0.*cos(t0) - y0.*sin(t0);
Yp = repmat(y,[m,1]) + x0.*sin(t0) + y0.*cos(t0);
Zp = repmat(z,[m,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
function HexagonVertices(x,y,z,r)
% 六边形
t = linspace(0,2*pi,7)';
m = numel(t);
Xp = repmat(x,[m,1])+cos(t)*r;
Yp = repmat(y,[m,1])+sin(t)*r;
Zp = repmat(z,[m,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor','flat');
end
function DialVertices(x,y,z,r)
% 表盘形
% 绘制表盘扇形
maxz = max(abs(z));
t0 = z*2*pi/maxz-pi/2;
t0 = cell2mat(arrayfun(@(x)linspace(-pi/2,x,30)',t0,'UniformOutput',0));
m = size(t0,1);
r0 = repmat(r,[m,1]);
Xp = [x;repmat(x,[m,1]) + r0.*cos(t0);x];
Yp = [y;repmat(y,[m,1]) + r0.*sin(t0);y];
Zp = repmat(z,[m+2,1]);
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor',[0,0,0]);
% 绘制表盘圆周
t = linspace(0,2*pi,30)';
m = numel(t);
Xp = repmat(x,[m,1])+cos(t)*r;
Yp = repmat(y,[m,1])+sin(t)*r;
Zp = repmat(z,[m,1]);
Xp = [Xp;flipud(Xp)];
Yp = [Yp;flipud(Yp)];
Zp = [Zp;flipud(Zp)];
patch(Xp,Yp,Zp,'FaceColor','flat','EdgeColor',[0,0,0]);
end
%--------------------------------------------------------------------------
% 解析输入参数子函数1
%--------------------------------------------------------------------------
function [FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,...XVarNames,YVarNames,ColorBar,GridOpt] = parseInputs(varargin)
if mod(nargin,2)~=0error('输入参数个数不对,应为成对出现');
end
pnames = {'FigShape','FigSize','FigStyle','FillStyle','DisplayOpt',...'TextColor','XVarNames','YVarNames','ColorBar','Grid'};
dflts = {'Square','Full','Auto','Fill','On','k','','','Off','On'};
[FigShape,FigSize,FigStyle,FillStyle,DisplayOpt,TextColor,XVarNames,...YVarNames,ColorBar,GridOpt] = parseArgs(pnames, dflts, varargin{:});
validateattributes(FigShape,{'char'},{'nonempty'},mfilename,'FigShape');
validateattributes(FigSize,{'char'},{'nonempty'},mfilename,'FigSize');
validateattributes(FigStyle,{'char'},{'nonempty'},mfilename,'FigStyle');
validateattributes(FillStyle,{'char'},{'nonempty'},mfilename,'FillStyle');
validateattributes(DisplayOpt,{'char'},{'nonempty'},mfilename,'DisplayOpt');
validateattributes(TextColor,{'char','numeric'},{'nonempty'},mfilename,'TextColor');
validateattributes(XVarNames,{'char','cell'},{},mfilename,'XVarNames');
validateattributes(YVarNames,{'char','cell'},{},mfilename,'YVarNames');
validateattributes(ColorBar,{'char'},{'nonempty'},mfilename,'ColorBar');
validateattributes(GridOpt,{'char'},{'nonempty'},mfilename,'Grid');
if ~any(strncmpi(FigShape,{'Square','Circle','Ellipse','Hexagon','Dial'},1))error('形状参数只能为Square, Circle, Ellipse, Hexagon, Dial 之一');
end
if ~any(strncmpi(FigSize,{'Full','Auto'},3))error('图形大小参数只能为Full, Auto 之一');
end
if ~any(strncmpi(FigStyle,{'Auto','Tril','Triu'},4))error('图形样式参数只能为Auto, Tril, Triu 之一');
end
if ~any(strncmpi(FillStyle,{'Fill','NoFill'},3))error('图形填充样式参数只能为Fill, NoFill 之一');
end
if ~any(strncmpi(DisplayOpt,{'On','Off'},2))error('显示数值参数只能为On,Off 之一');
end
if ~any(strncmpi(ColorBar,{'On','Off'},2))error('显示颜色条参数只能为On,Off 之一');
end
if ~any(strncmpi(GridOpt,{'On','Off'},2))error('显示网格参数只能为On,Off 之一');
end
end
%--------------------------------------------------------------------------
% 解析输入参数子函数2
%--------------------------------------------------------------------------
function [varargout] = parseArgs(pnames,dflts,varargin)
% Copyright 2010-2011 The MathWorks, Inc.
% $Revision: 1.1.6.2 $ $Date: 2011/05/09 01:27:26 $
% Initialize some variables
nparams = length(pnames);
varargout = dflts;
setflag = false(1,nparams);
unrecog = {};
nargs = length(varargin);
dosetflag = nargout>nparams;
dounrecog = nargout>(nparams+1);% Must have name/value pairs
if mod(nargs,2)~=0m = message('stats:internal:parseArgs:WrongNumberArgs');throwAsCaller(MException(m.Identifier, '%s', getString(m)));
end% Process name/value pairs
for j=1:2:nargspname = varargin{j};if ~ischar(pname)m = message('stats:internal:parseArgs:IllegalParamName');throwAsCaller(MException(m.Identifier, '%s', getString(m)));endmask = strncmpi(pname,pnames,length(pname)); % look for partial matchif ~any(mask)if dounrecog% if they've asked to get back unrecognized names/values, add this% one to the listunrecog((end+1):(end+2)) = {varargin{j} varargin{j+1}};continueelse% otherwise, it's an errorm = message('stats:internal:parseArgs:BadParamName',pname);throwAsCaller(MException(m.Identifier, '%s', getString(m)));endelseif sum(mask)>1mask = strcmpi(pname,pnames); % use exact match to resolve ambiguityif sum(mask)~=1m = message('stats:internal:parseArgs:AmbiguousParamName',pname);throwAsCaller(MException(m.Identifier, '%s', getString(m)));endendvarargout{mask} = varargin{j+1};setflag(mask) = true;
end% Return extra stuff if requested
if dosetflagvarargout{nparams+1} = setflag;if dounrecogvarargout{nparams+2} = unrecog;end
end
end
matlab绘制矩阵色块图相关推荐
- matlab色块轮廓,利用matlab绘制矩阵色块图.doc
<利用matlab绘制矩阵色块图.doc>由会员分享,可在线阅读,更多相关<利用matlab绘制矩阵色块图.doc(19页珍藏版)>请在金锄头文库上搜索. 1.R语言中有一个根 ...
- Matlab 绘制矩阵色块图
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zzx2016zzx/article/d ...
- matlab 色块图,matlab绘制矩阵色块图
function matrixplot(data,varargin) % 根据实值矩阵绘制色块图,用丰富的颜色和形状形象的展示矩阵元素值的大小. % % matrixplot(data) 绘制矩阵色块 ...
- 利用MATLAB 绘制矩阵色块图
%% http://www.matlabsky.com/thread-32849-1-1.html % 根据实值矩阵绘制色块图,以下为测试代码. x = [1,-0.2,0.3,0.8,-0.5 ...
- matlab 色块图,第四章 利用matlab绘制矩阵色块图.doc
R语言中有一个根据实值矩阵绘制色块图的程序(用于绘制相关系数矩阵图),可以用丰富的颜色和形状形象的展示矩阵元素值的大小.遗憾的是MATLAB中没有这样的函数,因此我就用MATLAB编写了一个matri ...
- matlab画矩阵色块图,大于0的数越大越红,小于0的数越小越蓝,0值为白色
首先上效果图.矩阵X值为 矩阵色块图显示如下: 具体操作如下: 在https://ww2.mathworks.cn/matlabcentral/fileexchange/25536-red-blue- ...
- 示例代码-Matlab绘制高斯分布曲面图(1)
高斯分布 \quad在数据建模时,经常会用到高斯分布模型[1,2],下面我们就使用Matlab来绘制高斯分布曲面. \quad另一种画法可参考:示例代码-Matlab绘制高斯分布曲面图(2). 1. ...
- matlab绘制星下点轨迹,MATLAB绘制GPS星下点轨迹图
MATLAB绘制GPS星下点轨迹图 轨迹计算部分参考链接: https://wenku.baidu.com/view/45bd098d4a7302768e9939cf.html 本文对上述matlab ...
- MATLAB绘制三维曲面图和等高线 绘图(2)
绘制三维曲面图步骤: 1): 对数据进行处理,得到三维曲面上的点坐标组 方法有: 1.将自变量离散, x=xmin:dx:xmax y=ymin:dy:ymax 2.利用meshgrid 指令 生成 ...
最新文章
- 【转】Word2007中不连续页码设置 多种页码设置
- mysql安装start service错误_为什么安装mysql会出现start service错误
- 打造云上金融!网易云信入选「2021 数字化转型最佳案例 Top10」
- Tech·Ed 2007大会课程内容
- can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用
- php观察者模式和注册数模式,PHP观察者模式
- 关于对象和类的那些小事
- VS2008中OGRE1.7.4下配置Hydrax-v0.5.1插件
- Javascript面向对象特性
- windows 7系统报错txupd.exe
- 关于VB访问数据库的一些经验(献给VB初学者)
- 屏幕画图工具Pointofix
- 国内有哪些不错的计算机视觉团队?
- Mac没声音解决办法记录
- Android系统五层架构
- 聊聊我在职场的至暗时刻!
- 使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试
- python读excel并写入_Python读取Excel文件并写入数据库
- c# mysql登录界面_C#窗体控件与MySQL实现登录功能
- MySQL 整体架构与 SQL 执行原理,数据库事务原理
热门文章
- E-Lin通用微服务平台介绍及性能比较
- 不要在极端情绪下处理感情,好吗?
- Numpy+Pandas+Matplotlib学习
- ios屏幕录制60帧_探索iOS屏幕帧缓冲区–内核反转实验
- spark运行在windows环境的idea遇到的问题记录
- 手机号码段简介以及最新手机号段归属地数据库(2018年7月1日)
- snkrs暂时无法链接服务器,安卓snkrs一直出错了怎么解决 苹果snkrs无法连接服务器什么原因...
- 机器学习 实验一 KNN
- 安装mysql最后一步未响应(解决方法)
- 计算机视觉基础--边缘检测