如何画热力图

2023-10-13 16:58
文章标签 力图 画热

本文主要是介绍如何画热力图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

热图绘制函数heatmap.2()的参数解析

在进行数据分析的时候,你一定见过或用过热图(heatmap)。它适合二维数据表的可视化,数值大小可以用不同颜色梯度进行展示。事实上,经过高通量测序生成的物种丰度表以及差异分析得到的差异物种丰度表,只有进一步生成直观图,才能更好地进行结果展示,热图就是我们常用的图片类型之一。然而,你会不会在很多时候觉得绘制出来的热图让你很不满意,想修改却无从下手?给大家介绍一个用于绘制热图的R函数——来自gplots包的heatmap.2(),看看如何利用其修改参数让热图更称你的心意。


一、基础绘图
首先,加载程序包,输入原始数据。
> library(gplots)
> data=read.table("for_plot_filter.txt",header=TRUE,row.names=1,sep="t",check.names=F,quote="")
输入的数据格式是这个样子的:


然后,R画图。
> pdf("heatmap.pdf",12,16)
> heatmap.2(as.matrix(data))
> dev.off()
如果不对参数进行任何修改,仅用默认参数,得到的图形是这个样子的:


得到这么原始的图片,我想你的内心一定是崩溃的。那么,接下来就来看看如何通过调整不同参数,让我们的热图改头换面吧。


二、调整参数
2.1  修改整体布局
> pdf("heatmap.pdf",12,16)
> par(oma=c(0,0,0,20)) #调整边界
> lmat = rbind(c(4,4),c(0,3),c(2,1),c(0,5)) #安排热图每个部分的位置
> lhei = c(0.5,0.8,4,0.5) #每个部分的高度比例
> lwid = c(1,3) #页面宽度方向的比例
> cexRow=2 #行名,即物种名的字体大小
> cexCol=2 #列名,即样品名的字体大小
> margin=c(2,2) #边界宽度
> heatmap.2(as.matrix(data),margins=margin,lmat = lmat,lhei=lhei,lwid=lwid,cexRow=cexRow,cexCol=cexCol)
> dev.off()
这样一来,各部分的安置包括字体的大小都有了很大的改观:


2.2  调整色块及颜色
> note=matrix(0,nrow(data),ncol(data))
>       for(i in 1:nrow(data)){
+         for (j in 1:ncol(data)){
+           if(data[i,j]>0.1) note[i,j]="*" else if(data[i,j]>0.01) note[i,j]="+" else note[i,j]=""
+         }  
+       }   #对样品中相对丰度大于0.01和0.1的物种丰度进行标记,也可以不要
> pdf("heatmap.pdf",12,16) 
> par(oma=c(0,0,0,20))
> library(RColorBrewer) #加载调色板
> col = colorRampPalette(c("lightblue", "yellow", "orange", "red"),bias=3)(3000) #设置颜色梯度
> heatmap.2(as.matrix(data),margins=margin,lmat = lmat,lhei=lhei,lwid=lwid,cexRow=cexRow,cexCol=cexCol,
col=col,scale='none',trace="none",
cellnote=note, notecol='black',notecex=1.0, #色块标记设置及标记的颜色和大小
colsep=c(1:ncol(data)),rowsep=c(1:nrow(data)),sepcolor="black",sepwidth=c(0.01, 0.01),  #设置色块之间的间隔及颜色
key.title=NA, keysize=0.06,key.xlab="relative abundance") #图片最上方键的设置,包括大小及名称
> dev.off()
调整色块和颜色后,热图看着清爽多了:


2.3  个性化取消或添加某部分
在上面这张热图中,有行和列两个方向的聚类,即物种和样品的聚类,如果你只想要其中一个方向的聚类树,或者两个都不想要,通过调整dendrogram的值即可。为了更美观,各部分高度和宽度的比例值也可以进行相应修改。
> pdf("heatmap.pdf",12,16) 
> par(oma=c(0,0,10,20))
> lmat = rbind(c(4,4),c(0,3),c(2,1),c(0,5))
> lhei = c(0.5,0.2,4,0.5) #修改高度比例
> lwid = c(1,3)
> heatmap.2(as.matrix(data),margins=c(2,2),lmat = lmat,lhei=lhei,lwid=lwid,
+           cexRow=cexRow,cexCol=cexCol,col=col,
+           scale='none',trace="none",
+           cellnote=note, notecol='black',notecex=1.0,
+           colsep=c(1:ncol(data)),rowsep=c(1:nrow(data)),sepcolor="black",sepwidth=c(0.01, 0.01),
+           key.title=NA, keysize=0.06,
+           key.xlab="relative abundance",
+           dendrogram = "row") #只保留行上的聚类树 dendrogram=c("both","row","column","none")
> dev.off()

至此,一张赏心悦目的热图就绘制好了。


文章出处:http://www.realbio.cn/index.php?c=msg&id=1151&

这篇关于如何画热力图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/204614

相关文章

【python 相关性分析】Python绘制相关性热力图

在数据分析时,经常会针对两个变量进行相关性分析。在Python中主要用到的方法是pandas中的corr()方法。 corr():如果由数据框调用corr函数,那么将会计算每个列两两之间的相似度,返回DataFrame # -*- coding: utf-8 -*-# 导入包import pandas as pdimport numpy as npimport matplotlib.py

热力图科普:数据可视化的利器

hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!! 日常闲扯 哎呀,第一天上完课,给俺的感觉是(热和惊喜),热是真热,从出租屋走到教学楼给我整的汗流浃背的了,然后上午班级的空调也不是很给力,所有很。。。,但也有惊喜哈,虽然我搬出来住了,不能和他们一起上课,但下课他们还是来找我了,到我这边来了,下午还帮我占了座位,还是挺惊喜开心的哈,白天也是忙碌起来了,生活也变得不那么无所事事和无聊了

YOLOv7输出层之间的热力图

我们经常看到一些论文里绘制了不同的热力图,来直观的感受其模型的有效性。特别是使用了注意力模块的网络,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。 例如Centralized Feature Pyramid for Object Detection这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的一个优越性。 本文就来记录一下如何使

three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字

对于大多数的开发者来言,看了很多文档可能遇见不到什么有用的,就算有用从文档上看,把代码复制到自己的本地大多数也是不能用的,非常浪费时间和学习成本, 尤其是three.js , cesium.js 这种难度较高, 想要实现一个功能可能会查阅很多博客 ,进行很多错误尝试,费时费力。 所以,话不多说为了给各位造福利,我搭建了在线查看代码且可的调试系统,所有案例可直接访问,让你欣赏 什么叫做 - 优雅永

数学建模----线性回归分析(引入热力图的绘制方法)

目录 0.直击重点 1.一元线性回归分析 1.1散点图的绘制 1.2相关性的分类 1.3计算相关系数 1.4模型的检验  1.5模型的预测  2.多重线性回归分析(上) 2.1多重线性的概念 2.2散点图的分类  2.3热力图的绘制  2.4根据结果确定新的变量 3.多重线性回归分析(下) 3.1多重共线性的判断方法 3.2多重共线性的解决  3.3对于效果的检

【mars3d-heatLayer】热力图在相机视角缩放时按新的raduis进行渲染

地图放大 地图缩小 代码: import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象// 需要覆盖config.json中地图属性参数(当前示例框架中自动处理合并)export const mapOptions = {scene: {center: { lat: 25.873121, lng:

python之matplotlib (6 等高线和热力图)

等高线 import numpy as npimport matplotlib.pyplot as pltdef f(x,y):return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)n=256x=np.linspace(-3,3,n)y=xX,Y=np.meshgrid(x,y)plt.contourf(X,Y,f(X,Y),8,alpha=0.75,

使用Seaborn绘制热力图

热力图是一种用于展示矩阵数据的图表,其中颜色深浅表示数据值的大小。 import seaborn as sns  import numpy as npimport matplotlib.pyplot as plt   # 创建示例数据  data = np.random.rand(10, 12)  # 绘制热力图  sns.heatmap(data, annot=True, cmap=

如何使用Vue3和ApexCharts创建交互式热力图?

本文由ScriptEcho平台提供技术支持 项目地址:传送门 热力图:可视化数据分布 应用场景介绍 热力图是一种数据可视化技术,它使用颜色来表示数据点的值。热力图常用于可视化分布数据,例如人口密度、温度变化或网站流量。 代码基本功能介绍 本文展示的代码使用 Vue3-apexcharts 库在 Vue.js 应用中创建了一个热力图。热力图显示了在不同时间段内的网站流量数据。 功能

深度学习中的热力图

深度学习中的热力图 热力图(Heatmap)在深度学习中是用于可视化数据、模型预测结果或特征的重要工具。它通过颜色的变化来表示数值的大小,便于直观地理解数据的分布、模型的关注区域以及特征的重要性。以下是深度学习中热力图的主要应用和特点。 热力图的主要应用 特征可视化 卷积神经网络(CNN):在图像分类和检测任务中,热力图可以用来可视化卷积层的激活值,显示网络对输入图像的不同部分的响应。Gr