执行双聚类(行和列)后如何在 heatmap.2 上添加 ColSideColors

     2023-03-12     258

关键词:

【中文标题】执行双聚类(行和列)后如何在 heatmap.2 上添加 ColSideColors【英文标题】:How to add ColSideColors on heatmap.2 after performing bi-clustering (row and column) 【发布时间】:2014-04-12 06:39:59 【问题描述】:

我有以下代码:

library(gplots)
library(RColorBrewer);

setwd("~/Desktop")
mydata <- mtcars
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="euclidean")

d <- distfunc(mydata)
fit <- hclustfunc(d)
clusters <- cutree(fit, h=100)
nofclust.height <-  length(unique(as.vector(clusters)));

# Colorings
hmcols <- rev(redgreen(2750))
selcol <- colorRampPalette(brewer.pal(12,"Set3"))
selcol2 <- colorRampPalette(brewer.pal(9,"Set1"))
clustcol.height = selcol2(nofclust.height);

heatmap.2(as.matrix(mydata), 
           trace='none', 
           dendrogram='both', 
           key=F,
           Colv=T, 
           scale='row',
           hclust=hclustfunc, distfun=distfunc, col=hmcols,
           symbreak=T,
           margins=c(7,10), keysize=0.1,
           lwid=c(5,0.5,3), lhei=c(0.05,0.5),
           lmat=rbind(c(5,0,4),c(3,1,2)),
           labRow=rownames(mydata),
           #ColSideColors=clustcol.height[clusters],  # This line doesn't work
           RowSideColors=clustcol.height[clusters])

产生下图:

我想要做的是在行和列上执行聚类,并在树状图旁边显示聚类条(RowSideColors 和 ColSideColors)。我怎样才能做到这一点?

目前我只成功展示了RowSideColors 但没有显示ColSideColors 之一。

【问题讨论】:

【参考方案1】:

为了同时显示RowSideColorsColSideColors,您必须分别获取矩阵行和列的聚类分配。目前,对象“集群”包含仅对应于行的集群。

# set the custom distance and clustering functions, per your example
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x, method="euclidean")

# perform clustering on rows and columns
cl.row <- hclustfunc(distfunc(mydata))
cl.col <- hclustfunc(distfunc(t(mydata)))

# extract cluster assignments; i.e. k=8 (rows) k=5 (columns)
gr.row <- cutree(cl.row, 8)
gr.col <- cutree(cl.col, 5)

# require(RColorBrewer)
col1 <- brewer.pal(8, "Set1")
col2 <- brewer.pal(5, "Pastel1")

# require(gplots)    
heatmap.2(as.matrix(mydata), hclustfun=hclustfunc, distfun=distfunc,   
          RowSideColors=col1[gr.row], ColSideColors=col2[gr.col])

您可以使用plot(cl.row)plot(cl.col) 检查聚类先验。您也可以使用RColorBrewer 库来选择最合适的颜色编码。顺序调色板可能会更好地避免过度着色。

【讨论】:

qubic双聚类学习以及代码编写运行(代码片段)

QUBIC介绍一种双聚类算法,就其在生物数据解释中的效率和有效性而言,QUIBIC被公认为是最佳的双聚类方法之一。软件包该软件包提供了QUBIC算法的R实现,具有显着提高的效率和完善的功能。说明书http://bioconductor.org/packages/QUBIC前... 查看详情

绘制二维矩阵的行和列

...题:我们给出了一个nxm矩阵,初始初始化为0。我们必须执行k个查询:每个查询都支持两种操作之一。用颜色ai绘制ri行中的所有元素。用颜色ai绘制ci列中的所有元素。同一元素可以多次绘制。但是该元素的颜色与该元素的最后... 查看详情

如何在 VBA 中显示选择查询的行和列值

】如何在VBA中显示选择查询的行和列值【英文标题】:howtodisplaytherowsandcolumnsvaluesinVBAforselectquery【发布时间】:2016-09-1400:27:24【问题描述】:我的实际代码如下:PrivateSubWorksheet_BeforeDoubleClick(ByValTargetAsRange,CancelAsBoolean)CallextractEnd... 查看详情

如何在 PostgreSQL 中转置列和行(即如何切换行和列)? [复制]

】如何在PostgreSQL中转置列和行(即如何切换行和列)?[复制]【英文标题】:HowtotransposecolumnsandrowsinPostgreSQL(i.e.,howdoIswitchrowsandcolumns)?[duplicate]【发布时间】:2012-10-2918:59:14【问题描述】:可能重复:Transposingansqlresultsothatonecolumng... 查看详情

悬停在表格上时如何突出显示表格的行和列?

】悬停在表格上时如何突出显示表格的行和列?【英文标题】:Howtohighlightatable\'srowandcolumnwhenhoveringoverit?【发布时间】:2019-06-0918:10:44【问题描述】:我想做与此示例完全相同的操作:http://jsfiddle.net/ThinkingStiff/rUhCa/。但是,当... 查看详情

excel怎么进行行列转换,excel如何转换行和列

参考技术A1."excel中如何进行行列转换,为您提供excel中如何进行行列转换图文信息,打开Excel文档,选中需要装换的表格。2.在开始里找到粘贴,选择下拉栏里的选择性粘贴。3.在弹出的选择性粘贴窗口中,勾选转置选项并点... 查看详情

如何在android中以编程方式创建表格行和列边框

】如何在android中以编程方式创建表格行和列边框【英文标题】:Howtocreatetablerowandcolumnborderfromprogrammaticallyinandroid【发布时间】:2014-03-1916:22:05【问题描述】:我关注HowcanIcreateatablewithbordersinAndroid?这非常有帮助,但在我的情况下... 查看详情

我们如何在 ext js 4.2 中突出显示网格面板的行和列?

】我们如何在extjs4.2中突出显示网格面板的行和列?【英文标题】:howcanwehighlighttherowandcolumnofthegridpanelinextjs4.2?【发布时间】:2015-01-0819:00:12【问题描述】:我们如何在选择网格面板时突出显示当前行和列?我可以突出显示行而... 查看详情

如何在 PyQt5 中保持行和列大小与网格布局相同?

】如何在PyQt5中保持行和列大小与网格布局相同?【英文标题】:HowcanIkeeprowandcolumnsizethesamewiththegridlayoutinPyQt5?【发布时间】:2021-11-2022:20:38【问题描述】:我正在尝试为国际象棋游戏创建GUI。我正在使用网格布局,当主窗口打... 查看详情

如何以编程方式将组件分配给 Delphi GridPanel 行和列?

】如何以编程方式将组件分配给DelphiGridPanel行和列?【英文标题】:HowtoassignacomponenttoaDelphiGridPanelrowandcolumnprogrammatically?【发布时间】:2017-05-2622:48:49【问题描述】:我正在使用Delphi开发一个项目,我正在动态地为GridPanel制作行... 查看详情

java示例代码_JAVA——如何在2D数组中查找行和列中的重复值

java示例代码_JAVA——如何在2D数组中查找行和列中的重复值 查看详情

如何在平面文件连接管理器编辑器中使用设置行和列分隔符

】如何在平面文件连接管理器编辑器中使用设置行和列分隔符【英文标题】:Howtousesetrowandcolumndelimiterinflatfileconnectionmanagereditor【发布时间】:2019-11-2510:34:33【问题描述】:我正在尝试为平面文件连接管理器设置行和列分隔符这... 查看详情

如何在使用数据表加载页面时为所有行和列动态添加复选框?

】如何在使用数据表加载页面时为所有行和列动态添加复选框?【英文标题】:HowtoaddacheckboxdynamicallyforallrowsandcolumnswhilepageonloadwithDatatables?【发布时间】:2017-12-2123:14:28【问题描述】:在加载数据表时,我需要在所有行和列标题... 查看详情

如何在 Xampp 上使用 MariaDB 将 XML 文件转换为行和列?

】如何在Xampp上使用MariaDB将XML文件转换为行和列?【英文标题】:HowtoconvertanXMLfiletorowsandcolumnsusingMariaDBonXampp?【发布时间】:2017-12-0904:53:29【问题描述】:我有一个如下所示的XML文件:<users><rowId="4"Reputation="27228"CreationDate=... 查看详情

如何在iOS中的按钮数组中检索所选按钮的行和列

】如何在iOS中的按钮数组中检索所选按钮的行和列【英文标题】:HowtoretrievetherowandcolofselectedbuttoninanarrayOfbuttonsiniOS【发布时间】:2011-11-1706:43:00【问题描述】:假设我使用以下代码创建了一个2DArray按钮:for(NSIntegerrowIndex=0;rowInde... 查看详情

如何修复 CListctrl 中的行和列重复

】如何修复CListctrl中的行和列重复【英文标题】:HowtofixrowandcolumnrepetitioninCListctrl【发布时间】:2015-05-2507:52:16【问题描述】:如何在MFC中修复CListctrl中的行列重复。intnItem=0;m_list.InsertColumn(0,_T("Name"),LVCFMT_LEFT,100);m_list.InsertColumn(1... 查看详情

Python - 如何在 Python 中从 Google 表格中读取特定范围的行和列?

】Python-如何在Python中从Google表格中读取特定范围的行和列?【英文标题】:Python-HowtoreadspecificrangeofrowsandcolumnsfromGoogleSheetinPython?【发布时间】:2022-01-2110:15:30【问题描述】:在GoogleSheet中有类似下面的数据需要读取从\'A4到C4\'列... 查看详情

在 sqlite 查询中如何获取具有所需值的特定行和列

】在sqlite查询中如何获取具有所需值的特定行和列【英文标题】:Insqlitequeryhowtogetaspecificrowandcolumnthathastherequiredvalue【发布时间】:2014-05-3007:07:33【问题描述】:我正在尝试构建一个测验应用程序,数据库中的条目如下所示id|term... 查看详情