ggplot-stat_density_2d密度圖樣式分享

實現(xiàn)基于t-SNE坐標(biāo),然后用某item的值來體現(xiàn)在顏色上,同時顯示基于item值過濾后的密度圖


image.png

數(shù)據(jù)集如下:


image.png

現(xiàn)在用數(shù)據(jù)集的tSNE_1列作為點(diǎn)的x坐標(biāo),tSNE_2列作為點(diǎn)的y坐標(biāo),顯示HALLMARK_SPERMATOGENESIS列每個點(diǎn)的分?jǐn)?shù)

ggplot2簡單定義一個點(diǎn)圖疊加密度圖的函數(shù)
Densityplt2 <- function(data,x,y,score,densitySelect){
    samples = data; X=x ; Y=y ; DensitySelect = densitySelect
    library(ggplot2)
    jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000")) #色盤
    ##核心繪圖
    max_expression=max(samples[,Score]) #點(diǎn)對應(yīng)Score的最大值
    min_expression=min(samples[,Score]) #點(diǎn)對應(yīng)Score的最小值
    
    arrondi <- function (x) ifelse(x>0, ifelse(x-trunc(x)>=0.5,trunc(x)+1,trunc(x)), ifelse(x-trunc(x)<=-0.5,trunc(x)-1,trunc(x)))
    max_tsneX=arrondi(max(samples[,X]))+1 #設(shè)置X軸最大刻度
    min_tsneX=arrondi(min(samples[,X]))-1 #設(shè)置X軸最小刻度
    max_tsneY=arrondi(max(samples[,Y]))+1 #設(shè)置Y軸最大刻度
    min_tsneY=arrondi(min(samples[,Y]))-1 #設(shè)置Y軸最小刻度
    #############
    p <- ggplot(samples, aes_string(x = X, y = Y)) +
        #基于score繪制密度圖
        stat_density_2d(data=samples[samples[,Score]>DensitySelect,], aes(fill=..level..,alpha=..level..), geom='polygon', colour='darkgrey', n=50) +
        #繪制點(diǎn)圖
        geom_jitter(aes(x = samples[,X], y = samples[,Y], color = samples[,Score]), size=1, alpha=0.7) +
        ###樣式調(diào)整
        labs(color = "Score") + # color legend
        scale_colour_gradientn(colours = jet.colors(10), limits=c(min_expression, max_expression)) + #點(diǎn)對應(yīng)的Value映射到顏色
        xlab(X) +
        ylab(Y) +
        theme_bw() +
        theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) +  # remove grid
        scale_alpha_continuous(range=c(0.1,0.5))+
        scale_x_continuous(limits = c(min_tsneX, max_tsneX))+ #設(shè)置X軸刻度范圍
        scale_y_continuous(limits = c(min_tsneY, max_tsneY))+ #設(shè)置Y軸刻度范圍
        theme(
            plot.title = element_text(size = 14),
            axis.text.x = element_text(size = 14, color='black'),
            axis.text.y = element_text(size = 14, color='black'),
            strip.text.x = element_text(size = 14, color='black',angle=90),
            strip.text.y = element_text(size = 14, color='black',angle=90),
            axis.title.x = element_text(size = 14, color='black'),
            axis.title.y = element_text(size = 14, angle=90))
    return(p)
}

加載數(shù)據(jù)表(DataFrame):samples <- read.table("*.tsv",sep = '\t',header = T,row.names = 1)
然后調(diào)用函數(shù)Densityplt2(data = samples,score = "HALLMARK_SPERMATOGENESIS",x = "tSNE_1",y = "tSNE_2",densitySelect = 4)選用數(shù)據(jù)表的“HALLMARK_SPERMATOGENESIS”列顯示樣本分?jǐn)?shù)

方法引用自文獻(xiàn):
Pont, Frédéric et al. “Single-Cell Signature Explorer for comprehensive visualization of single cell signatures across scRNA-seq datasets.” Nucleic acids research vol. 47,21 (2019): e133. doi:10.1093/nar/gkz601

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容