我正在尝试用R中的包pheatmap创建一个带有基因表达值的热图.我已经多次使用该代码,直到今天仍然没有问题.看来当我做scale ="row"时,我最终得到了这个错误.我无法创建z分数.因此,可能某些行没有可变性,因此发生这种情况.我怎么能摆脱这个.矩阵具有1100行和9列.我的代码:
data <- read.table("~path/DEGs_DESeq.txt",sep="\t")
data2 <- as.matrix(data[,2:9])
data3 <- data2[-1,]
samples <- data2[1,]
genes <- data[2:length(data2[,1]),1]
vett <- as.numeric(data3)
data4 <- matrix(vett, length(genes), length(samples), dimnames=list(paste(genes),paste(samples)))
head(data4)
pheatmap(as.matrix(data4), col=bluered(200), scale="row", key=T, keysize=1.5,
density.info="none", trace="none",cexCol=0.6, fontsize_row=8, fontsize_col=10)
Run Code Online (Sandbox Code Playgroud)
hclust中的错误(d,方法=方法):外部函数调用中的NA/NaN/Inf(arg 11)
我怎样才能摆脱这个错误?
我知道如何使用 pheatmap 按注释类别对行(基因)进行分组,并且我知道如何对整个行(基因)集执行 Person 的相关聚类,但我想要完成的是执行聚类(并显示独立的树状图)独立于每个类别。
这甚至可能吗?或者我是否被迫为每个类别创建单独的热图以在类别的基础上进行聚类?
在下面检查我的 MWE:
set.seed(1)
library(pheatmap)
mymat <- matrix(rexp(600, rate=.1), ncol=12)
colnames(mymat) <- c(rep("treatment_1", 3), rep("treatment_2", 3), rep("treatment_3", 3), rep("treatment_4", 3))
rownames(mymat) <- paste("gene", 1:dim(mymat)[1], sep="_")
annotdf <- data.frame(row.names = paste("gene", 1:dim(mymat)[1], sep="_"), category = c(rep("CATEGORY_1", 10), rep("CATEGORY_2", 10), rep("CATEGORY_3", 10), rep("CATEGORY_4", 10), rep("CATEGORY_5", 10)))
pheatmap(mymat,
scale="row",
cluster_rows = FALSE,
cluster_cols = FALSE,
gaps_row=c(10,20,30,40),
gaps_col=c(3,6,9),
cellheight = 6,
cellwidth = 20,
border_color=NA,
fontsize_row = 6,
filename = "TEST1.png",
annotation_row = annotdf
)
pheatmap(mymat,
scale="row",
cluster_rows = …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以在根处合并多个 hclust 对象(或树状图)?
我已经使示例尽可能完整来说明我的问题。
假设我想按区域对 USArrest 进行聚类,然后将所有 hclust 对象联合起来,将它们绘制在热图中。
USArrests
Northeast <- c("Connecticut", "Maine", "Massachusetts", "New Hampshire", "Rhode Island",
"Vermont", "New Jersey", "New York", "Pennsylvania")
Midwest <- c("Illinois", "Indiana", "Michigan", "Ohio", "Wisconsin",
"Iowa", "Kansas", "Minnesota", "Missouri", "Nebraska", "North Dakota",
"South Dakota")
South <- c("Delaware", "Florida", "Georgia", "Maryland", "North Carolina",
"South Carolina", "Virginia", "West Virginia",
"Alabama", "Kentucky", "Mississippi", "Tennessee", "Arkansas",
"Louisiana", "Oklahoma", "Texas")
West <- c("Arizona", "Colorado", "Idaho", "Montana", "Nevada", "New Mexico",
"Utah", "Wyoming", "Alaska", "California", "Hawaii", "Oregon", "Washington")
h1 <- …Run Code Online (Sandbox Code Playgroud) 我想知道是否有人知道允许对热图进行部分行标记的包。我目前正在使用 pheatmap() 来构建我的热图,但我可以使用任何具有此功能的包。
我有很多行差异表达基因的图,我想标记其中的一个子集。有两个主要的事情需要考虑(我能想到的):
下面是一个部分解决方案的例子,它实际上只能达到一半,但我希望能说明我想要做的事情。
set.seed(1)
require(pheatmap)
require(RColorBrewer)
require(grid)
### Data to plot
data_mat <- matrix(sample(1:10000, 300), nrow = 50, ncol = 6)
rownames(data_mat) <- paste0("Gene", 1:50)
colnames(data_mat) <- c(paste0("A", 1:3), paste0("B", 1:3))
### Set how many genes to annotate
### TRUE - make enough labels that some overlap
### FALSE - no overlap
tooMany <- T
### Select a few genes to annotate
if (tooMany) {
sigGenes_v <- paste0("Gene", c(5,20,26,42,47,16,28))
newMain_v <- "Too Many Labels"
} else …Run Code Online (Sandbox Code Playgroud) 可重现的数据:
data(crabs, package = "MASS")
df <- crabs[-(1:3)]
set.seed(12345)
df$GRP <- kmeans(df, 4)$cluster
df.order <- dplyr::arrange(df, GRP)
Run Code Online (Sandbox Code Playgroud)
数据说明:
df有 5 个数值变量。我根据这 5 个属性进行了 K-means 算法,并生成了一个GRP具有 4 个级别的新分类变量。接下来,我订购了它GRP并命名了它df.order。
我做了什么pheatmap:
## 5 numerical variables for coloring
colormat <- df.order[c("FL", "RW", "CL", "CW", "BD")]
## Specify the annotation variable `GRP` shown on left side of the heatmap
ann_row <- df.order["GRP"]
## gap indices
gapRow <- cumsum(table(ann_row$GRP))
library(pheatmap)
pheatmap(colormat, cluster_rows = F, show_rownames = F, …Run Code Online (Sandbox Code Playgroud) 我正面临着谷歌热图的一个奇怪问题.热图在热图数据中增加坐标数量时显示的数据点较少.对于333坐标,热图显示数据点,如:

如您所见,333坐标的数据点数多于9885坐标.但它应该显示更多的大数据数据点.我的代码:
var map = new google.maps.Map(document.getElementById('bcak_track_map'), {
zoom:19,
center:{lat:parseFloat(flat), lng:parseFloat(flon)},
mapTypeId:google.maps.MapTypeId.SATELLITE
});
map.setTilt(45);
var heatMapBounds = new google.maps.LatLngBounds();
var markerCount = 0;
$.each(marker_points, function (key, val) {
var myLatLon = new google.maps.LatLng(parseFloat(val.latitute), parseFloat(val.longtute));
heatArr[markerCount] = {location: myLatLon, weight: 2};
heatMapBounds.extend(myLatLon);
markerCount++;
});
var sheatmap = new google.maps.visualization.HeatmapLayer({
data:new google.maps.MVCArray(heatArr),
radius:30
});
sheatmap.setMap(map);
map.fitBounds(heatMapBounds);
bounds = new google.maps.LatLngBounds(null);
Run Code Online (Sandbox Code Playgroud)
数据进入marker_points
[
Object { latitute="33.65112310998252", longtute="-117.98994390000001"},
Object { latitute="33.650867", longtute="-117.990379"},
Object { latitute="33.650867", longtute="-117.990379"},
Object { latitute="33.650855606216076", longtute="-117.99054136256564"},
Object { latitute="33.650867", …Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制多面板图,其中一个面板是用于layout放置绘图的热图。我一直在绘制热图,pheatmap它提供了非常方便的配色方案等。
代码可以在这里pheatmap找到。
当我尝试以pheatmap这种方式使用时,它总是在新页面上绘制。我想这是因为它使用了包grid?有什么办法可以做到这一点pheatmap吗?
用于在条形图旁边生成热图的示例代码,但由于热图绘制在下面的新页面上,因此不会生成热图:
xlay=layout( matrix(c(2,2,1),nrow=1) )
layout.show(xlay)
barplot(rnorm(8),horiz=T)
pheatmap(matrix(rnorm(80),nrow=8))
Run Code Online (Sandbox Code Playgroud) 我需要使用“pheatmap”函数制作热图,使用 UPGMA 和 1-pearson 相关性作为距离度量。我的教授声称这是默认的距离度量,尽管在我的例子中它使用“欧几里德”作为距离度量。欧几里得和 1 - 皮尔逊相关性相同还是他错了?如果他错了,我如何为我的热图使用正确的距离度量?
我的意见
ph=pheatmap(avgreltlog10, color = colorRampPalette(rev(brewer.pal(n = 7,
name = "RdYlBu")))(100),
kmeans_k = NA, breaks = NA, border_color = "grey60",
cellwidth = 10, cellheight=10, scale = "none", cluster_rows=TRUE,
clustering_method = "average", cutree_rows = 4, cutree_cols= 2,)
Run Code Online (Sandbox Code Playgroud)
R输出
$tree_row
Call:
hclust(d = d, method = method)
Cluster method : average
Distance : euclidean
Number of objects: 65
$tree_col
Call:
hclust(d = d, method = method)
Cluster method : average
Distance : euclidean
Number of …Run Code Online (Sandbox Code Playgroud) library(pheatmap)
another<-read.table("~/Desktop/tcga3dcategorized.csv",sep=',',header=FALSE)
test<-another[1:3]
labels<-another[4]
colnames(test)=c("Dim 1","Dim 2","Dim 3")
annotation_row=data.frame(CancerType=factor(labels))
ann_colors=list(CancerType=c(KIRC="red", UCEC="#B2509E",LUSC="#D49DC7",
LGG="#C1A72F",PCPG="#E8C51D",HNSC="#F9ED32",CESC="#104A7F",ESCA="#9EDDF9",
BRCA="#007EB5",THCA="#CACCDB",PRAD="#6E7BA2",MESO="#DAF1FC",PAAD="#00AEEF",
LUAD="#F6B667",LAML="#D97D25",UVM="#FBE3C7",GBM="#F89420",READ="#97D1A9",
SKCM="#009444",KIRP="#754C29",COAD="#CEAC8F",LIHC="#3953A4",SARC="#BBD642",
OV="#00A99D",BLCA="#D3C3E0",STAD="#A084BD",TGCT="#542C88",ACC="#FAD2D9",
THYM="#ED1C24",KICH="#F8AFB3",DLBC="#EA7075",UCS="#7E1918",CHOL="#BE1E2D"))
pheatmap(test,annotation_row=annotation_row,annotation_colors=ann_colors,main="title")
```
Run Code Online (Sandbox Code Playgroud)
错误是:
Error in annotation_colors[[colnames(annotation)[i]]] :
subscript out of bounds
Run Code Online (Sandbox Code Playgroud) 我正在使用 pheatmap 包。默认情况下,它将绘图绘制到屏幕上。就我而言,这意味着在 R studio 的 R markdown notebook 中输出。但我也想保存到文件中。如果我将它保存到一个文件中,并为其提供filename=参数,它就不会绘制到屏幕上(R 笔记本)。有没有办法让这两件事都发生?更一般地说,对于我想在屏幕上保存和显示的任何情节(ggplot2)?
pheatmap ×10
r ×9
heatmap ×5
annotations ×1
dendrogram ×1
distance ×1
ggplot2 ×1
google-maps ×1
hclust ×1
label ×1
metric ×1
na ×1
plot ×1
scaling ×1