classdef SHeatmap
% =========================================================================
% Format
% -------------------------------------------------------------------------
% sq : square (default) : 方形(默认)
% pie : pie chart : 饼图
% circ : circular : 圆形
% oval : oval : 椭圆形
% hex : hexagon :六边形
% asq : auto-size square :自带调整大小的方形
% acirc : auto-size circular :自带调整大小的圆形
% =========================================================================
% -------------------------------------------------------------------------
properties
ax,arginList={'Format','Parent'}
Format='sq'
% sq : square (default) : 方形(默认)
% pie : pie chart : 饼图
% circ : circular : 圆形
% oval : oval : 椭圆形
% hex : hexagon :六边形
% asq : auto-size square :自带调整大小的方形
% acirc : auto-size circular :自带调整大小的圆形
Data
dfColor1=[0.9686 0.9882 0.9412; 0.9454 0.9791 0.9199; 0.9221 0.9700 0.8987; 0.8988 0.9609 0.8774;
0.8759 0.9519 0.8560; 0.8557 0.9438 0.8338; 0.8354 0.9357 0.8115; 0.8152 0.9276 0.7892;
0.7909 0.9180 0.7685; 0.7545 0.9039 0.7523; 0.7180 0.8897 0.7361; 0.6816 0.8755 0.7199;
0.6417 0.8602 0.7155; 0.5962 0.8430 0.7307; 0.5507 0.8258 0.7459; 0.5051 0.8086 0.7610;
0.4596 0.7873 0.7762; 0.4140 0.7620 0.7914; 0.3685 0.7367 0.8066; 0.3230 0.7114 0.8218;
0.2837 0.6773 0.8142; 0.2483 0.6378 0.7929; 0.2129 0.5984 0.7717; 0.1775 0.5589 0.7504;
0.1421 0.5217 0.7314; 0.1066 0.4853 0.7132; 0.0712 0.4488 0.6950; 0.0358 0.4124 0.6768;
0.0314 0.3724 0.6364; 0.0314 0.3319 0.5929; 0.0314 0.2915 0.5494; 0.0314 0.2510 0.5059]
dfColor2=[0.6196 0.0039 0.2588; 0.6892 0.0811 0.2753; 0.7588 0.1583 0.2917; 0.8283 0.2354 0.3082;
0.8706 0.2966 0.2961; 0.9098 0.3561 0.2810; 0.9490 0.4156 0.2658; 0.9660 0.4932 0.2931;
0.9774 0.5755 0.3311; 0.9887 0.6577 0.3690; 0.9930 0.7266 0.4176; 0.9943 0.7899 0.4707;
0.9956 0.8531 0.5238; 0.9968 0.9020 0.5846; 0.9981 0.9412 0.6503; 0.9994 0.9804 0.7161;
0.9842 0.9937 0.7244; 0.9526 0.9810 0.6750; 0.9209 0.9684 0.6257; 0.8721 0.9486 0.6022;
0.7975 0.9183 0.6173; 0.7228 0.8879 0.6325; 0.6444 0.8564 0.6435; 0.5571 0.8223 0.6448;
0.4698 0.7881 0.6460; 0.3868 0.7461 0.6531; 0.3211 0.6727 0.6835; 0.2553 0.5994 0.7139;
0.2016 0.5261 0.7378; 0.2573 0.4540 0.7036; 0.3130 0.3819 0.6694; 0.3686 0.3098 0.6353]
Colormap;maxV;Parent=[];
patchHdl;boxHdl;pieHdl;textHdl
% 修改为上下三角
Type='Full';VarName;RLabelHdl;CLabelHdl
end
methods
function obj=SHeatmap(Data,varargin)
obj.Data=Data;
obj.maxV=max(max(abs(obj.Data)));
% 获取其他数据
for i=1:2:(length(varargin)-1)
tid=ismember(obj.arginList,varargin{i});
if any(tid)
obj.(obj.arginList{tid})=varargin{i+1};
end
end
% 设置配色
if any(any(obj.Data<0))
obj.Colormap=obj.dfColor2;
% tX=linspace(0,1,size(obj.Colormap,1));
% tXi=linspace(0,1,256);
% tR=interp1(tX,obj.Colormap(:,1),tXi);
% tG=interp1(tX,obj.Colormap(:,2),tXi);
% tB=interp1(tX,obj.Colormap(:,3),tXi);
% obj.Colormap=[tR(:),tG(:),tB(:)];
else
obj.Colormap=obj.dfColor1(end:-1:1,:);
end
end
function obj=draw(obj)
if isempty(obj.Parent)
obj.ax=gca;
else
obj.ax=obj.Parent;
end
obj.ax.NextPlot='add';
obj.ax.Box='on';
obj.ax.FontName='Times New Roman';
obj.ax.FontSize=12;
obj.ax.LineWidth=.8;
obj.ax.XLim=[.5,size(obj.Data,2)+.5];
obj.ax.YLim=[.5,size(obj.Data,1)+.5];
obj.ax.YDir='reverse';
obj.ax.TickDir='out';
obj.ax.TickLength=[0.002,0.002];
obj.ax.DataAspectRatio=[1,1,1];
obj.ax.YTick=1:size(obj.Data,1);
obj.ax.XTick=1:size(obj.Data,2);
colormap(obj.ax,obj.Colormap)
colorbar(obj.ax)
if any(any(obj.Data<0))
try caxis(obj.ax,obj.maxV.*[-1,1]),catch,end
try clim(obj.ax,obj.maxV.*[-1,1]),catch,end
else
try caxis(obj.ax,obj.maxV.*[0,1]),catch,end
try clim(obj.ax,obj.maxV.*[0,1]),catch,end
end
% 调整初始界面大小
fig=obj.ax.Parent;
fig.Color=[1,1,1];
if max(fig.Position(3:4))<600
fig.Position(3:4)=[1.6,1.8].*fig.Position(3:4);
fig.Position(1:2)=fig.Position(1:2)./4;
end
bX1=repmat([.5,size(obj.Data,2)+.5,nan],[size(obj.Data,1)+1,1])';
bY1=repmat((.5:1:(size(obj.Data,1)+.5))',[1,3])';
bX2=repmat((.5:1:(size(obj.Data,2)+.5))',[1,3])';
bY2=repmat([.5,size(obj.Data,1)+.5,nan],[size(obj.Data,2)+1,1])';
obj.boxHdl=plot(obj.ax,[bX1(:);bX2(:)],[bY1(:);bY2(:)],'LineWidth',.8,'Color',[1,1,1].*.85);
if isequal(obj.Format,'sq')
set(obj.boxHdl,'Color',[1,1,1,0])
end
disp(char([64 97 117 116 104 111 114 32 58 32,...
115 108 97 110 100 97 114 101 114]))
baseT=linspace(0,2*pi,200);
hexT=linspace(0,2*pi,7);
thetaMat=[1,-1;1,1].*sqrt(2)./2;
for row=1:size(obj.Data,1)
for col=1:size(obj.Data,2)
if isnan(obj.Data(row,col))
obj.patchHdl(row,col)=fill(obj.ax,[-.5,.5,.5,-.5].*.98+col,[-.5,-.5,.5,.5].*.98+row,[.8,.8,.8],'EdgeColor','none');
obj.pieHdl(row,col)=fill(obj.ax,[0,0,0,0],[0,0,0,0],[0,0,0]);
obj.textHdl(row,col)=text(obj.ax,col,row,'×','FontName','Times New Roman','HorizontalAlignment','center','FontSize',20);
else
tRatio=abs(obj.Data(row,col))./obj.maxV;
switch obj.Format
case 'sq'
obj.patchHdl(row,col)=fill(obj.ax,[-.5,.5,.5,-.5].*.98+col,[-.5,-.5,.5,.5].*.98+row,...
obj.Data(row,col),'EdgeColor','none');
case 'asq'
obj.patchHdl(row,col)=fill(obj.ax,[-.5,.5,.5,-.5].*.98.*tRatio+col,[-.5,-.5,.5,.5].*.98.*tRatio+row,...
obj.Data(row,col),'EdgeColor','none');
case 'pie'
baseCircX=cos(baseT).*.92.*.5;
baseCircY=sin(baseT).*.92.*.5;
obj.pieHdl(row,col)=fill(obj.ax,baseCircX+col,baseCircY+row,...
[1,1,1],'EdgeColor',[1,1,1].*.3,'LineWidth',.8);
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab绘制各种专用热图(源码+图片+说明文档).rar
共105个文件
png:85个
m:17个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 10 浏览量
2023-03-23
14:06:31
上传
评论 1
收藏 14.74MB RAR 举报
温馨提示
1、资源内容:基于Matlab绘制各种专用热图(源码+图片+说明文档).rar 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab绘制各种专用热图(源码+图片+说明文档).rar (105个子文件)
SHeatmap.m 18KB
demo11_TreeGroup.m 3KB
demo6_triType.m 2KB
demo8_Tree.m 2KB
SClusterBlock.m 2KB
SDendrogram.m 2KB
demo1_BasicUse.m 2KB
demo3_Colormap.m 2KB
demo10_Multilayer.m 1KB
demo9_Group.m 1KB
demo2_Format.m 1011B
demo7_tri2.m 850B
demo5_setMN.m 646B
demo4_setAll.m 636B
slanCM.m 572B
git_add_push.m 102B
git_pull.m 46B
slanCM_Data.mat 870KB
说明文档.md 19KB
README.mlx 5.42MB
_8.png 299KB
_6.png 282KB
_9.png 251KB
Colormap_clim.png 224KB
_5.png 206KB
_7.png 199KB
Type_XLim1.png 199KB
_3.png 198KB
Type_XLim2.png 188KB
_4.png 181KB
Format_pie_A.png 179KB
Format_pie_B.png 176KB
Type_tril_pie.png 169KB
Format_oval_B.png 167KB
Colormap_slanCM_134.png 167KB
Format_oval_A.png 166KB
Colormap_slanCM_136.png 166KB
Type_tri2_2.png 164KB
Colormap_slanCM_141.png 161KB
Type_tril_oval.png 157KB
Type_tri2_1.png 157KB
_2.png 155KB
Type_triu_pie.png 153KB
All1.png 152KB
Type_tril0_pie.png 152KB
Type_tril0_oval.png 151KB
Format_circ_A.png 150KB
Format_circ_B.png 148KB
Type_tril_circ.png 147KB
Type_triu_oval.png 144KB
Type_tril.png 142KB
Type_triu0_pie.png 137KB
Type_triu0_oval.png 136KB
Type_triu_circ.png 131KB
Type_tril0_circ.png 131KB
Type_tril0.png 131KB
Type_Font.png 130KB
Basic_with_text.png 129KB
Type_triu.png 127KB
All2.png 125KB
Type_triu0.png 117KB
Type_triu0_circ.png 117KB
Type_tril_hex.png 112KB
Format_hex_A.png 108KB
Type_tril_acirc.png 105KB
Format_hex_B.png 105KB
Format_acirc_B.png 100KB
Format_acirc_A.png 100KB
Type_tril0_hex.png 94KB
Type_triu_hex.png 93KB
Type_tril0_acirc.png 89KB
Type_triu_acirc.png 86KB
MN.png 84KB
Type_triu0_hex.png 78KB
Type_triu0_acirc.png 73KB
QRcode.png 71KB
TreeGroup.png 70KB
Type_tril_asq.png 69KB
Tree.png 69KB
Type_tril0_asq.png 65KB
Type_tril_sq.png 64KB
_1.png 63KB
Type_tril0_sq.png 60KB
Basic_25_30.png 53KB
Type_triu_asq.png 50KB
Type_triu0_asq.png 48KB
Type_triu_sq.png 46KB
Type_labels.png 43KB
Type_triu0_sq.png 43KB
Basic_with_labels.png 40KB
Group.png 38KB
Format_asq_A.png 34KB
Basic_positive.png 34KB
Colormap_slanCM_21.png 33KB
Colormap_bone.png 33KB
Colormap_slanCM_61.png 33KB
Colormap_slanCM_20.png 33KB
Format_asq_B.png 33KB
Basic_negative.png 33KB
Colormap_slanCM_177.png 31KB
共 105 条
- 1
- 2
资源评论
- 草莓猕猴桃2023-11-14资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
- lijian9842023-08-16资源不错,内容挺好的,有一定的使用价值,值得借鉴,感谢分享。
- 临崖听风2023-11-30资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
- bingzhi_lin2023-11-28资源内容详实,描述详尽,解决了我的问题,受益匪浅,学到了。
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2180
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功