热图绘制

author author     2023-04-11     222

关键词:

参考技术A

公众号链接: http://mp.weixin.qq.com/s/mNSkf1rjWTCtE1pIOuI2rA

热图是做分析时常用的展示方式,简单、直观、清晰。可以用来显示基因在不同样品中表达的高低、表观修饰水平的高低等。任何一个数值矩阵都可以通过合适的方式用热图展示。

本篇使用R的 ggplot2 包实现从原始数据读入到热图输出的过程,并在教程结束后提供一份封装好的命令行绘图工具,只需要提供矩阵,即可一键绘图。

上一篇讲述了Rstudio的使用作为R写作和编译环境的入门,后面的命令都可以拷贝到Rstudio中运行,或写成一个R脚本,使用 Rscript heatmap.r 运行。我们还提供了Bash的封装,在不修改R脚本的情况下,改变参数绘制出不同的图形。

绘图首先需要数据。通过生成一堆的向量,转换为矩阵,得到想要的数据。

注意:运算符的优先级。

Vector转为矩阵 (matrix),再转为数据框 (data.frame)。

虽然方法比较繁琐,但一个数值矩阵已经获得了。

还有另外2种获取数值矩阵的方式。

可以看到列名字中以数字开头的列都加了 X 。一般要尽量避免行或列名字以 数字开头 ,会给后续分析带去一些困难;另外名字中出现的非字母、数字、下划线、点的字符都会被转为 ,也需要注意,尽量只用字母、下划线和数字。

与上一步类似,只是改为文件名,不再赘述。

数据读入后,还需要一步格式转换。在使用ggplot2作图时,有一种长表格模式是最为常用的,尤其是数据不规则时,更应该使用 (这点,我们在讲解箱线图时再说)。

数据转换后就可以画图了,分解命令如下:

热图出来了,但有点不对劲,横轴重叠一起了。一个办法是调整图像的宽度,另一个是旋转横轴标记。

设置想要的颜色。

调整legend的位置。

调整背景和背景格线以及X轴、Y轴的标题。

合并以上命令,就得到了下面这个看似复杂的绘图命令。

图形出来了,就得考虑存储了,

至此,完成了简单的heatmap的绘图。但实际绘制时,经常会碰到由于数值变化很大,导致颜色过于集中,使得图的可读性下降很多。因此需要对数据进行一些处理,具体的下次再说。

在烛台图顶部绘制热图

】在烛台图顶部绘制热图【英文标题】:Drawingheatmapontopofcandlestickchart【发布时间】:2019-06-0522:59:32【问题描述】:我正在尝试在烛台图表上绘制热图(canvas或svg),以便查看特定蜡烛的交易量或订单大小(类似于张量图和bookmap... 查看详情

一个函数实现基因内具有多种突变类型的热图的绘制(代码片段)

??我们平常多见的基因突变热图是一个基因一个格子,一种突变类型,但实际上在同一个病人中,同一个基因往往具有多种突变类型,因此传统的热图绘制工具并不能满足我们绘图的需要。应研究需要,本人自己写了一个热图绘... 查看详情

使用“gridgraphics”软件包绘制多个热图(代码片段)

...这个答案,该答案在R中使用gridGraphics程序包绘制了多个热图。https://stackoverflow.com/a/31768236/11696009但是,尽管我能够重新创建示例(显然),但我需要将其应用于我自己的独特条件。我有一本有6张纸的Excel工作簿。我想将每个工... 查看详情

如何根据 GradientBoost 结果绘制热图?

】如何根据GradientBoost结果绘制热图?【英文标题】:HowtoplotheatmapbasedonGradientBoostresults?【发布时间】:2019-08-1811:25:41【问题描述】:我想根据y_predict和y_train的结果打印混淆矩阵的热图。我有点卡住了,我已经查看了热图的pandas... 查看详情

如何从 pandas DataFrame 绘制热图

】如何从pandasDataFrame绘制热图【英文标题】:HowtoplotaheatmapfrompandasDataFrame【发布时间】:2016-06-1718:00:00【问题描述】:这是我的数据框:janfmamj\\2000-7.89473722.38700622.07792214.545515.8038-3.333332001-3.57894711.95876328.7410935.0541574.715111.242 查看详情

从订单簿绘制热图(熊猫数据框)

】从订单簿绘制热图(熊猫数据框)【英文标题】:Plotlyheatmapfromorderbook(pandasdataframe)【发布时间】:2021-09-2612:39:13【问题描述】:我正在尝试将订单簿数据输入到我从交换API检索的绘图热图中。我检索的数据以这种格式存储在pa... 查看详情

ggplot2热图绘制

参考技术Amtcars可以发现共线性矩阵的左上和右下是一模一样的两部分;画出一部分参考:ggplot2:Quickcorrelationmatrixheatmap 查看详情

用文本绘制美国热图

】用文本绘制美国热图【英文标题】:plottingUSheatmapwithtext【发布时间】:2015-04-0102:05:04【问题描述】:输入:Percent.TurnoutUS.State70CA80NM76RI我有美国50个州的数据。此外,US.State的州缩写与函数state.abb中的缩写一致我想创建一张美... 查看详情

使用 ggplot 绘制 300 多个单位的热图

】使用ggplot绘制300多个单位的热图【英文标题】:Heatmapusingggplotfor300+units【发布时间】:2021-10-1108:18:48【问题描述】:我正在尝试使用我在网上找到的以下代码(https://simplystatistics.org/2019/08/28/you-can-replicate-almost-any-plot-with-ggplot2/)... 查看详情

绘制时间序列热图时提高 ggplotly 的性能

】绘制时间序列热图时提高ggplotly的性能【英文标题】:Improveperformanceofggplotlywhenplottingtime-seriesheatmap【发布时间】:2020-06-3022:22:18【问题描述】:我正在使用Plotly和Shiny构建一个interactivetime-seriesheatmapinR。作为此过程的一部分,... 查看详情

绘制聚类热图(带树状图)/Python

】绘制聚类热图(带树状图)/Python【英文标题】:Plotlyclusteredheatmap(withdendrogram)/Python【发布时间】:2021-06-0709:11:21【问题描述】:我正在尝试在Python中使用plotly创建一个聚集的热图(带有树状图)。他们在他们的网站上制作的... 查看详情

如何将数组绘制为热图时间序列

】如何将数组绘制为热图时间序列【英文标题】:Howtoplotanarrayasaheatmaptimeseries【发布时间】:2019-10-2316:04:41【问题描述】:我正在尝试创建一个sns热图,其中每一行代表一个数组条目。我的数组看起来像:arr=[[a,b,c],[b,c,d],[e,f,g]]... 查看详情

我可以为散景热图绘制颜色条吗?

】我可以为散景热图绘制颜色条吗?【英文标题】:CanIplotacolorbarforabokehheatmap?【发布时间】:2015-12-1309:57:48【问题描述】:散景是否有一种简单的方法来绘制热图的颜色条?Inthisexample这将是一个条带,说明颜色如何与值对应。... 查看详情

从三个列表中绘制热图:X、Y、强度

】从三个列表中绘制热图:X、Y、强度【英文标题】:Plottingaheatmapfromthreelists:X,Y,Intensity【发布时间】:2016-02-2918:56:18【问题描述】:当我有x、y、强度时,我不知道如何创建热图(或等高线图)。我有一个看起来像这样的文件:... 查看详情

网格搜索后如何在 pivot_table 上绘制热图

】网格搜索后如何在pivot_table上绘制热图【英文标题】:howtoplotaheatmaponpivot_tableaftergrid-search【发布时间】:2018-07-2507:02:04【问题描述】:我使用ElasticNet进行了网格搜索,但在绘制热图以查看alpha和l1比率之间的关系时遇到了麻烦... 查看详情

为啥 np.arange(data.shape[1]+1)-.5 用于绘制热图?

】为啥np.arange(data.shape[1]+1)-.5用于绘制热图?【英文标题】:Whyisnp.arange(data.shape[1]+1)-.5usedtoplotaheatmap?为什么np.arange(data.shape[1]+1)-.5用于绘制热图?【发布时间】:2022-01-1922:59:21【问题描述】:我不知道这段代码是做什么的,因为... 查看详情

利用matlab绘制矩阵色块图和热图

MATLAB自带热图命令:h=heatmap(XVarNames,XVarNames,R_t)https://ww2.mathworks.cn/help/matlab/ref/heatmap.html热图属性控制:https://ww2.mathworks.cn/help/matlab/ref/matlab.graphics.chart.heatmapchart-properties.html&n 查看详情

添加滑块以绘制热图动画-python

】添加滑块以绘制热图动画-python【英文标题】:Addslidertoplotlyheatmapanimation-python【发布时间】:2021-10-1011:51:39【问题描述】:我想为热图动画添加一个滑块。我有五个不同的数据帧(每个数据帧一帧)。数据框如下:aba530300bNaN200... 查看详情