【MATLAB基础绘图第16棒】绘制热图(Heatmap) 您所在的位置:网站首页 等高线的图例怎么画出来视频教程 【MATLAB基础绘图第16棒】绘制热图(Heatmap)

【MATLAB基础绘图第16棒】绘制热图(Heatmap)

2024-07-11 02:00| 来源: 网络整理| 查看: 265

MATLAB绘制热图(Heatmap) 热图(Heatmap)heatmap函数创建热图heatmap属性 案例案例1:基本绘制案例2:修改热图的属性案例3:设置部分标签案例4:部分数值设置特殊标注(如黑点、白框等)案例5:添加显著水平**/*等 参考

热图(Heatmap)

热图的主要作用是直观展示重点研究对象的差异情况,多用于经济学与工学差异性分析之中。

heatmap函数创建热图

语法

h=heatmap(tbl,xvar,yvar) h=heatmap(tbl,xvar,yvar,'ColorVariable',cvar) h=heatmap(cdata) h=heatmap(xvalues,yvalues,cdata) h=heatmap(___,Name,Value) h=heatmap(parent,___) 说明 h = heatmap(tbl,xvar,yvar) 基于表 tbl 创建一个热图,并返回 HeatmapChart 对象。xvar 输入参数指示沿 x 轴显示的表变量。yvar 输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 x 和 y 值一起出现在表中的总次数。可使用 h 在创建热图之后对其进行修改。 h=heatmap(tbl,xvar,yvar,'ColorVariable',cvar) 使用 cvar 指定的表变量来计算颜色数据。默认的计算方法为均值聚合。 h=heatmap(cdata) 基于矩阵 cdata 创建一个热图。热图上的每个单元格对应 cdata 中的一个值。 h=heatmap(xvalues,yvalues,cdata) 指定沿 x 轴和 y 轴显示的值的标签。 h=heatmap(___,Name,Value) 使用一个或多个名称-值对组参数指定热图的其他选项。请在所有其他输入参数之后指定这些选项。 h = heatmap(parent,___) 在由 parent 指定的图窗、面板或选项卡上创建热图。 heatmap属性

MATLAB-中文帮助 在这里插入图片描述

案例 案例1:基本绘制

此案例利用Matlab自带的‘heatmap’命令绘制热图。虽然好看,但有一个问题:其标题、坐标轴标题、字体字号等属性无法分开单独设置。

成图如下: 在这里插入图片描述 MATLAB代码如下:

clc close all clear %% 基础设置 pathFigure= '.\Figures\' ; figureUnits = 'centimeters'; figureWidth = 30; figureHeight = 20; %% 绘制热图 figure(1) set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]); % 绘制热图:河东地区各站点干旱年内分布图 XName = ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"]; YName = ["景泰", "皋兰","靖远","榆中","临夏","临洮","华家岭","环县","平凉","西峰镇","玛曲","合作","岷县","武都","天水北道区"]; h = heatmap( XName , YName , SPI1Station ,'FontSize',10); % h.CellLabelColor = 'none'; % 设为 'none' 表明去掉标注值 h.GridVisible = 'off'; % 设置坐标区名字与图的大标题 % h.Title = 'Tiltle'; h.XLabel = '月份'; h.YLabel = '站点'; % 对热图上色—colormap函数 hc = colormap(gca, flipud(hot) ); set(gca,'FontSize',16); % ,'Fontname', 'Times New Roman' str= strcat(pathFigure, "Fig.2", '.tiff'); print(gcf, '-dtiff', '-r600', str); 案例2:修改热图的属性

热图的图形包括了x轴名称、y轴名称、x和y的数据、颜色、数据标注、图例等属性,可以通过修改热图函数的返回值的句柄设置其属性。 成图如下:(中文字体为宋体;西文字体为Times New Roman) 在这里插入图片描述 MATLAB代码如下:

clc close all clear %% 基础设置 pathFigure= '.\Figures\' ; figureUnits = 'centimeters'; figureWidth = 30; figureHeight = 20; figure(2) set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]); % 绘制热图:河东地区各站点干旱年内分布图 XName = ["1\fontname{宋体}月","2\fontname{宋体}月","3\fontname{宋体}月","4\fontname{宋体}月","5\fontname{宋体}月","6\fontname{宋体}月",... "7\fontname{宋体}月","8\fontname{宋体}月","9\fontname{宋体}月","10\fontname{宋体}月","11\fontname{宋体}月","12\fontname{宋体}月"]; YName = ["\fontname{宋体}景泰", "\fontname{宋体}皋兰","\fontname{宋体}靖远","\fontname{宋体}榆中","\fontname{宋体}临夏","\fontname{宋体}临洮",... "\fontname{宋体}华家岭","\fontname{宋体}环县","\fontname{宋体}平凉","\fontname{宋体}西峰镇","\fontname{宋体}玛曲","\fontname{宋体}合作","\fontname{宋体}岷县","\fontname{宋体}武都","\fontname{宋体}天水北道区"]; h = heatmap( XName , YName , SPI1Station ,'FontSize',10); h.GridVisible = 'off'; h.FontName='Times New Roman'; % 设置显示的字体 h.FontSize = 14; % 设置显示的字体大小 % 设置坐标区名字与图的大标题 % h.Title = 'Tiltle'; h.XLabel = '\fontname{宋体}月份'; h.YLabel = '\fontname{宋体}站点'; % 对热图上色—colormap函数 hc = colormap(gca, flipud(hot) ); set(gca,'FontSize',16); % ,'Fontname', 'Times New Roman' str= strcat(pathFigure, "Fig.2", '.tiff'); print(gcf, '-dtiff', '-r600', str); 案例3:设置部分标签

在数据量较大时,希望只有部分数据备注大小,此时应当如何实现呢? 但标签文字方向貌似不能修改,这还是有点烦人啊

在这里插入图片描述 设置代码如下:

figureUnits = 'centimeters'; figureWidth = 20; figureHeight = 12; % 图形1:绘制热图 figure(2) set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]); h = heatmap( rho ,'FontSize',10); % XName, YName, h.GridVisible = 'off'; h.XDisplayLabels = {'','','','4','','','','8','','','','12','','','','16','','','','20','','','','24'}; h.YDisplayLabels = {' ','2\fontname{宋体}月',' ','4\fontname{宋体}月',' ','6\fontname{宋体}月',' ','8\fontname{宋体}月',' ','10\fontname{宋体}月',' ','12\fontname{宋体}月'}; h.FontName='Times New Roman'; % 设置显示的字体 h.FontSize = 14; % 设置显示的字体大小 % 设置坐标区名字与图的大标题 % h.Title = 'Tiltle'; h.XLabel = '\fontname{宋体}时间尺度\fontname{Times New Roman}\itSPI'; h.YLabel = '\fontname{宋体}月份'; % 对热图上色—colormap函数 hc = colormap(gca, flipud(hot) ); set(gca,'FontSize',16); % ,'Fontname', 'Times New Roman' 案例4:部分数值设置特殊标注(如黑点、白框等)

如果想像下面这幅图(出自参考论文1)一样,部分设置标注,该如何实现呢? 在这里插入图片描述 成果图如下所示: 在这里插入图片描述 MATLAB相关代码如下:

figureUnits = 'centimeters'; figureWidth = 20; figureHeight = 12; % 图形2:绘制热图 figure1 = figure(2); set(gcf, 'Units', figureUnits, 'Position', [0 0 figureWidth figureHeight]); h = heatmap( rho ,'FontSize',10); % XName, YName, h.GridVisible = 'off'; h.XDisplayLabels = {'','','','4','','','','8','','','','12','','','','16','','','','20','','','','24'}; h.YDisplayLabels = {' ','2\fontname{宋体}月',' ','4\fontname{宋体}月',' ','6\fontname{宋体}月',' ','8\fontname{宋体}月',' ','10\fontname{宋体}月',' ','12\fontname{宋体}月'}; h.FontName='Times New Roman'; % 设置显示的字体 h.FontSize = 14; % 设置显示的字体大小 % 设置坐标区名字与图的大标题 % h.Title = 'Tiltle'; h.XLabel = '\fontname{宋体}时间尺度\fontname{Times New Roman}\itSPI'; h.YLabel = '\fontname{宋体}月份'; % 对热图上色—colormap函数 hc = colormap(gca, flipud(hot) ); set(gca,'FontSize',16); % ,'Fontname', 'Times New Roman' % t = text( root,'string',"(a) \fontname{宋体}洮河流域", 'Units','normalized','position',[0.02,1.05], 'FontSize',14,'FontWeight','Bold','FontName','Times New Roman'); for iMonth=1:12 FigurePosition = get(gca, 'InnerPosition'); InnerPosition = [0.13, 0.128208513604737,0.732671957671958,0.796791486395263]; xStart = FigurePosition(1,1)+FigurePosition(1,3)*index(iMonth)/24-0.024; yStart = FigurePosition(1,2)+FigurePosition(1,4)*(1- iMonth/12)+0.0195; % 创建 rectangle annotation(figure1,'rectangle',... [xStart, yStart, 0.016, 0.03],... 'Color',[1 1 1],... 'FaceColor',[1 1 1],'FaceAlpha',.9); end 案例5:添加显著水平**/*等

若想得到以下图形(出自参考论文1),该如何实现呢? 在这里插入图片描述

参考

1、参考论文-J2016-From meteorological to hydrological drought using standardised indicators



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有