我只是想知道是否有人有過根據同時基于多個基因的表達為 ggplot 中制作的 UMAP 之類的東西著色的經驗?我想要做的是類似于 Seurat 特征圖中的混合函式,但有 3 個基因/顏色而不是 2 個。
我想做這樣的事情:

基因的顏色在重疊的地方結合。
到目前為止我所得到的是
ggplot(FD, vars = c("UMAP_1", "UMAP_2", "FOSL2", "JUNB", "HES1"), aes(x = UMAP_1, y = UMAP_2, colour = FOSL2))
geom_point(size=0.3, alpha=1)
scale_colour_gradientn(colours = c("lightgrey", colour1), limits = c(0, 0.3), oob = scales::squish)
new_scale_color()
geom_point(aes(colour = JUNB), size=0.3, alpha=0.7)
scale_colour_gradientn(colours = c("lightgrey", colour2), limits = c(0.1, 0.2), oob = scales::squish)
new_scale_color()
geom_point(aes(colour = HES1), size=0.3, alpha=0.1)
scale_colour_gradientn(colours = c("lightgrey", colour3), limits = c(0, 0.3), oob = scales::squish)
其中 FD 是一個資料框,包含來自 seurat 物件的 UMAP 坐標和三個感興趣基因的表達水平的資訊。我所能得到的只是一個圖,其中一層的點掩蓋了它下面的點,我試過弄亂顏色、漸變、alpha 和比例,但我猜我做錯了。

如果有人知道進行這項作業的方法或對其他嘗試有任何建議,將不勝感激。
uj5u.com熱心網友回復:
在 ggplot2 中沒有“香草”方式來做到這一點。可以使用 ggnewscale 包預先計算混合顏色并附加不可見的圖層和比例。
讓我們假設出于可重復性的目的,我們想要制作鳶尾花資料集的 UMAP,并使用葉子的描述符作為“基因”。
library(ggplot2)
library(scales)
library(ggnewscale)
#> Warning: package 'ggnewscale' was built under R version 4.1.1
# Calculate a UMAP
umap <- uwot::umap(iris[, 1:4])
# Combine with original data and blended colours
df <- cbind.data.frame(
setNames(as.data.frame(umap), c("x", "y")),
iris,
colour = rgb(
rescale(iris$Sepal.Length),
rescale(iris$Sepal.Width),
rescale(iris$Petal.Length)
)
)
ggplot(df, aes(x, y, colour = colour))
geom_point()
scale_colour_identity()
new_scale_colour()
# shape = NA --> invisible layers
geom_point(aes(colour = Sepal.Length), shape = NA)
scale_colour_gradient(low = "black", high = "red")
new_scale_colour()
geom_point(aes(colour = Sepal.Width), shape = NA)
scale_colour_gradient(low = "black", high = "green")
new_scale_colour()
geom_point(aes(colour = Petal.Length), shape = NA)
scale_colour_gradient(low = "black", high = "blue")
#> Warning: Removed 150 rows containing missing values (geom_point).
#> Warning: Removed 150 rows containing missing values (geom_point).
#> Warning: Removed 150 rows containing missing values (geom_point).

在更具實驗性的方面,我在github上有一個具有相關功能的包。
library(ggchromatic) # devtools::install_github("teunbrand/ggchromatic")
ggplot(df, aes(x, y, colour = rgb_spec(Sepal.Length, Sepal.Width, Petal.Length)))
geom_point()

由reprex 包(v2.0.1)于 2021 年 10 月 18 日創建
一個小的旁注:當資料的某些屬性映射到不同的顏色通道時,繪圖變得非常難以解釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/325060.html
