为什么FeaturePlot表达式的比例从-1到2,如何使其从0到2?

wztqucjr  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(170)

我试着做一个特征图来检查我的聚类中的一些标记基因,并使用代码:pericyte<-FeaturePlot(sunion, reduction = "umap", features = c("Mefesk4", "Vtn", "Colec11", "Abcc9", "Myo1v", "Cooh7", "Heyl", "Kcnj8", "Gnb4", "Rgs5"))
代码运行正常,我可以看到表达这些基因的簇亮了起来。然而,一些图的颜色范围是从0到2,而另一些图的颜色范围是从-1到2。-1到2范围的图给所有簇一个蓝色色调,而在0到2范围内,不表达的簇是灰色的。
我想让所有的绘图使用0到2的比例,但我如何定义比例?我尝试将keep.scale = "all"添加到代码中,但这只会使所有的比例从-1到2。

jogvjijk

jogvjijk1#

如果没有实际数据,很难给予一个好的解决方案,但也许您可以使用以下两个函数将任何矩阵缩放到您喜欢的范围内(如果需要,也可以将其还原)。这样您就可以在绘图前准备好数据:

scale.2<-function(b,frange=c(0,1)){
  std<-(b-min(b))/(max(b)-min(b))
  scl<-std*(frange[2]-frange[1]) + frange[1]
  return(list(scl=scl,scale_range=frange,minmax_original=c(min(b),max(b))))
}

unscale<-function(scl,minmax_original){
  frange<-c(min(scl),max(scl))
  std<-(scl-frange[1])/(frange[2]-frange[1])
  b<-std*(minmax_original[2]-minmax_original[1]) + minmax_original[1]
  return(b)
}

下面是它的工作原理:

original<-matrix(1:9,nrow=3,byrow = T)

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9

缩放至范围[0..255]

scaled<-scale.2(original,frange = c(0,255))

$scl
        [,1]    [,2]    [,3]
[1,]   0.000  31.875  63.750
[2,]  95.625 127.500 159.375
[3,] 191.250 223.125 255.000

$scale_range
[1]   0 255

$minmax_original
[1] 1 9

并从中恢复原始数据:

unscale(scaled$scl,scaled$minmax_original)

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
k3fezbri

k3fezbri2#

也许在调用FeaturePlot之前可以尝试一下

DefaultAssay(sunion) = "RNA"

相关问题