當前位置:首頁 » 網頁前端 » 小提琴圖R語言腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

小提琴圖R語言腳本

發布時間: 2022-12-16 06:02:06

『壹』 python小提琴圖組別數量不一樣

要調至數量相等。
Python的創始人為荷蘭人吉多·范羅蘇姆(GuidovanRossum)。1989年聖誕節期間,在阿姆斯特丹,Guido為了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是取自英國20世紀70年代首播的電視喜劇《蒙提·派森的飛行馬戲團》(MontyPython'sFlyingCircus)。
ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC這種語言非常優美和強大,是專門為非專業程序員設計的。但是ABC語言並沒有成功,究其原因,Guido認為是其非開放造成的。Guido決心在Python中避免這一錯誤。同時,他還想實現在ABC中閃現過但未曾實現的東西。

『貳』 2019-10-22 R語言Seurat包下游分析-1

下游分析

cellranger count 計算的結果只能作為錯略觀測的結果,如果需要進一步分析聚類細胞,還需要進行下游分析,這里使用官方推薦 R 包(Seurat 3.0)

流程參考官方外周血分析標准流程( https://satijalab.org/seurat/v3.0/pbmc3k_tutorial.html )

Rstudio操作過程:

## 安裝seurat

install.packages('Seurat')

## 載入seurat包

library(dplyr)

library(Seurat)

## 讀入pbmc數據(文件夾路徑不能包含中文,注意「/「的方向不能錯誤,這里讀取的是10x處理的文件,也可以處理其它矩陣文件,具體怎樣操作現在還不知道,文件夾中的3個文件分別是:barcodes.tsv,genes.tsv,matrix.mtx,文件的名字不能錯,否則讀取不到)

pbmc.data <- Read10X(data.dir = "D:/pbmc3k_filtered_gene_bc_matrices/filtered_gene_bc_matrices/hg19/")

## 查看稀疏矩陣的維度,即基因數和細胞數

dim(pbmc.data)

pbmc.data[1:10,1:6]

## 創建Seurat對象與數據過濾,除去一些質量差的細胞(這里讀取的是單細胞 count 結果中的矩陣目錄;在對象生成的過程中,做了初步的過濾;留下所有在>=3 個細胞中表達的基因 min.cells = 3;留下所有檢測到>=200 個基因的細胞 min.genes = 200。)

pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)

pbmc

##計算每個細胞的線粒體基因轉錄本數的百分比(%),使用[[ ]] 操作符存放到metadata中,mit-開頭的為線粒體基因

pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")

##展示基因及線粒體百分比(這里將其進行標記並統計其分布頻率,"nFeature_RNA"為基因數,"nCount_RNA"為細胞數,"percent.mt"為線粒體佔比)

VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)

plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")

plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")

CombinePlots(plots = list(plot1, plot2))

## 過濾細胞:根據上面小提琴圖中基因數"nFeature_RNA"和線粒體數"percent.mt",分別設置過濾參數,這里基因數 200-2500,線粒體百分比為小於 5%,保留gene數大於200小於2500的細胞;目的是去掉空GEMs和1個GEMs包含2個以上細胞的數據;而保留線粒體基因的轉錄本數低於5%的細胞,為了過濾掉死細胞等低質量的細胞數據。

pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)

## 表達量數據標准化,LogNormalize的演算法:A = log( 1 + ( UMIA ÷ UMITotal ) × 10000

pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)

#pbmc <- NormalizeData(pbmc) 或者用默認的

## 鑒定表達高變基因(2000個),用於下游分析,如PCA;

pbmc <- FindVariableFeatures(pbmc, selection.method = "vst", nfeatures = 2000)

## 提取表達量變化最高的10個基因;

top10 <- head(VariableFeatures(pbmc), 10)

top10

plot1 <- VariableFeaturePlot(pbmc)

plot2 <- LabelPoints(plot = plot1, points = top10)

CombinePlots(plots = list(plot1, plot2))

plot1<-VariableFeaturePlot(object=pbmc)

plot2<-LabelPoints(plot=plot1,points=top10,repel=TRUE)

CombinePlots(plots=list(plot1,plot2))

## PCA分析:

# PCA分析數據准備,使用ScaleData()進行數據歸一化;默認只是標准化高變基因(2000個),速度更快,不影響PCA和分群,但影響熱圖的繪制。

#pbmc <- ScaleData(pbmc,vars.to.regress ="percent.mt")

## 而對所有基因進行標准化的方法如下:

all.genes <- rownames(pbmc)

pbmc <- ScaleData(pbmc, features = all.genes)

pbmc <- ScaleData(pbmc, vars.to.regress = "percent.mt")

## 線性降維(PCA),默認用高變基因集,但也可通過features參數自己指定;

pbmc <- RunPCA(pbmc, features = VariableFeatures(object = pbmc))

## 展示 pca 結果(最簡單的方法)

DimPlot(object=pbmc,rection="pca")

## 檢查PCA分群結果, 這里只展示前5個PC,每個PC只顯示5個基因;

print(pbmc[["pca"]], dims = 1:5, nfeatures = 5)

##PC_ 1 

##Positive:  RPS27, MALAT1, RPS6, RPS12, RPL13 

##Negative:  CSTA, FCN1, CST3, LYZ, LGALS2 

##PC_ 2 

##Positive:  NKG7, GZMA, CST7, KLRD1, CCL5 

##Negative:  RPL34, RPL32, RPL13, RPL39, LTB 

##PC_ 3 

##Positive:  MS4A1, CD79A, BANK1, IGHD, CD79B 

##Negative:  IL7R, RPL34, S100A12, VCAN, AIF1 

##PC_ 4 

##Positive:  RPS18, RPL39, RPS27, MALAT1, RPS8 

##Negative:  PPBP, PF4, GNG11, SDPR, TUBB1 

##PC_ 5 

##Positive:  PLD4, FCER1A, LILRA4, SERPINF1, LRRC26 

##Negative:  MS4A1, CD79A, LINC00926, IGHD, FCER2 

## 展示主成分基因分值

VizDimLoadings(pbmc, dims = 1:2, rection = "pca")

## 繪制pca散點圖

DimPlot(pbmc, rection = "pca")

## 畫第1個或15個主成分的熱圖;

DimHeatmap(pbmc, dims = 1, cells = 500, balanced = TRUE)

DimHeatmap(pbmc, dims = 1:15, cells = 500, balanced = TRUE)

## 確定數據集的分群個數

# 鑒定數據集的可用維度,方法1:Jackstraw置換檢驗演算法;重復取樣(原數據的1%),重跑PCA,鑒定p-value較小的PC;計算『null distribution』(即零假設成立時)時的基因scores。虛線以上的為可用維度,也可以調整 dims 參數,畫出所有 pca 查看。

#pbmc <- JackStraw(pbmc, num.replicate = 100)

#pbmc <- ScoreJackStraw(pbmc, dims = 1:20)

#JackStrawPlot(pbmc, dims = 1:15)

# 方法2:肘部圖(碎石圖),基於每個主成分對方差解釋率的排名。

ElbowPlot(pbmc)

## 細胞聚類:分群個數這里選擇10,建議嘗試選擇多個主成分個數做下游分析,對整體影響不大;在選擇此參數時,建議選擇偏高的數字(為了獲取更多的稀有分群,「寧濫勿缺」);有些亞群很罕見,如果沒有先驗知識,很難將這種大小的數據集與背景雜訊區分開來。

## 非線性降維(UMAP/tSNE)基於PCA空間中的歐氏距離計算nearest neighbor graph,優化任意兩個細胞間的距離權重(輸入上一步得到的PC維數) 。

pbmc <- FindNeighbors(pbmc, dims = 1:10)

## 接著優化模型,resolution參數決定下游聚類分析得到的分群數,對於3K左右的細胞,設為0.4-1.2 能得到較好的結果(官方說明);如果數據量增大,該參數也應該適當增大。

pbmc <- FindClusters(pbmc, resolution = 0.5)

## 使用Idents()函數可查看不同細胞的分群;

head(Idents(pbmc), 5)

## 結果:AAACCTGAGGTGCTAG    AAACCTGCAGGTCCAC    AAACCTGCATGGAATA AAACCTGCATGGTAGG      AAACCTGCATTGGCGC 

               1                3                0               10                2 

Levels: 0 1 2 3 4 5 6 7 8 9 10 11

## Seurat提供了幾種非線性降維的方法進行數據可視化(在低維空間把相似的細胞聚在一起),比如UMAP和t-SNE,運行UMAP需要先安裝'umap-learn'包,這里不做介紹,兩種方法都可以使用,但不要混用,如果混用,後面的結算結果會將先前的聚類覆蓋掉,只能保留一個。

## 這里採用基於TSNE的聚類方法。

pbmc <- RunTSNE(pbmc, dims = 1:10)

## 用DimPlot()函數繪制散點圖,rection = "tsne",指定繪制類型;如果不指定,默認先從搜索 umap,然後 tsne, 再然後 pca;也可以直接使用這3個函數PCAPlot()、TSNEPlot()、UMAPPlot(); cols,pt.size分別調整分組顏色和點的大小;

DimPlot(pbmc,rection = "tsne",label = TRUE,pt.size = 1.5)

## 這里採用基於圖論的聚類方法

pbmc<-RunUMAP(object=pbmc,dims=1:10)

DimPlot(object=pbmc,rection="umap")

## 細胞周期歸類

pbmc<- CellCycleScoring(object = pbmc, g2m.features = cc.genes$g2m.genes, s.features = cc.genes$s.genes)

head(x = [email protected])

DimPlot(pbmc,rection = "tsne",label = TRUE,group.by="Phase",pt.size = 1.5)

## 存儲結果

saveRDS(pbmc, file = "D:/pbmc_tutorial.rds")

save(pbmc,file="D:/res0.5.Robj")

## 尋找cluster 1的marker

cluster1.markers <- FindMarkers(pbmc, ident.1 = 1, min.pct = 0.25)

head(cluster1.markers, n = 5)

## 結果:      p_val             avg_logFC        pct.1       pct.2        p_val_adj

MT-CO1  0.000000e+00    -0.6977083      0.985       0.996       0.000000e+00

RPS27  2.182766e-282     0.3076454       1.000       0.999        3.480202e-278

MT-CO3 2.146399e-274    -0.4866429      0.995       0.997       3.422218e-270

DUSP1  2.080878e-247    -1.7621662       0.376       0.745       3.317752e-243

RPL34  8.647733e-244     0.3367755        1.000       0.997       1.378795e-239

##尋找每一cluster的marker

pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)

pbmc.markers %>% group_by(cluster) %>% top_n(n = 2, wt = avg_logFC)

# A tibble: 24 x 7

# Groups:   cluster [12]

       p_val avg_logFC pct.1 pct.2 p_val_adj cluster gene 

       <dbl>     <dbl> <dbl> <dbl>     <dbl> <fct>   <chr>

 1 2.29e-123     0.636 0.344 0.097 3.65e-119 0       CD8B 

 2 7.62e-113     0.487 0.632 0.305 1.22e-108 0       LEF1 

 3 2.04e- 74     0.483 0.562 0.328 3.25e- 70 1       LEF1 

 4 1.39e- 61     0.462 0.598 0.39  2.22e- 57 1       ITM2A

 5 0.            2.69  0.972 0.483 0.        2       GNLY 

 6 0.            2.40  0.964 0.164 0.        2       GZMB 

 7 1.31e-121     0.768 0.913 0.671 2.09e-117 3       JUNB 

 8 2.06e- 94     0.946 0.426 0.155 3.28e- 90 3       RGS1 

 9 2.05e-255     1.57  0.586 0.09  3.27e-251 4       GZMK 

10 2.94e-140     1.57  0.69  0.253 4.68e-136 4       KLRB1

# ... with 14 more rows

## 存儲marker

write.table(pbmc.markers,file="D:/allmarker.txt")

## 各種繪圖

## 繪制Marker 基因的tsne圖

FeaturePlot(pbmc, features = c("MS4A1", "GNLY", "CD3E", "CD14", "FCER1A", "FCGR3A", "LYZ", "PPBP", "CD8A"),cols = c("gray", "red"))

## 繪制Marker 基因的小提琴圖

VlnPlot(pbmc, features = c("MS4A1", "CD79A"))

VlnPlot(pbmc, features = c("NKG7", "PF4"), slot = "counts", log = TRUE)

## 繪制分cluster的熱圖

top10 <- pbmc.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)

DoHeatmap(pbmc, features = top10$gene) + NoLegend()

剩下的便是尋找基因 marker 並對細胞類型進行注釋(見下回分解)

『叄』 【R語言】共享單車測算用戶滿意程度&AB測試

一、分析需求

1.對共享單車滿意度評分數據進行清洗,去除空缺值等

2.對用戶滿意度分數的整體情況進行分析

3.對於收押金這一舉措,用AB測試思路來檢測收押金是否會影響用戶滿意度

二、數據情況(實驗數據)

北京四個城區調研客戶對共享單車的滿意程度,並分為了對照組和實驗組,分別對收押金前後的滿意程度進行了統計

三、分析過程

1. 清洗數據填補空值

對數據進行整理清理,其中分數有些許空缺值,填補缺失值採用的統計量是去除空值後的分數的平均值,填補缺失值大小是5.458333,實現語句:

setwd("C:/Users/emera/Desktop/共享單車評分數據")

R_homework <-

read.csv("共享單車評分數據.csv",fileEncoding ="UTF-8-BOM")

#查看數據整體情況

str(R_homework)

#查看是否有空值

is.na(R_homework$城區)

is.na(R_homework$分數)

is.na(R_homework$組別)

is.na(R_homework$推薦者)

is.na(R_homework$年齡)

#填充空值

alternative_value<-

mean(R_homework$分數,na.rm = TRUE)

R_homework[is.na(R_homework$分數), "分數"] <-alternative_value

is.na(R_homework$分數)

2. 對分數整體顯現情況進行初步分析

從直方圖中可以看出,朝陽區和東城區給出8分的用戶最多,西城區給出7分的用戶最多。海淀區分數兩級分化情況比較嚴重,給最多的分數是9分和3分,同時高分(分數7分以上)數量比其他區域高,但低分(3分以下)的數量也很高。

從箱型圖中我們可以進一步看出,朝陽區、東城區、西城區用戶的平均分相近,海淀區平均分最高,但是海淀區的分數也是最分散的。從小提琴圖中,我們可以看到西城區高分面積最大,低分面積最小,海淀區呈現兩極分化的葫蘆形,東城區各分數段數量分布比較均勻,朝陽區數據離散度較小。

實現語句:

#直方圖

library(ggplot2)

a <-

ggplot(R_homework,aes(分數))

a +geom_histogram(binwidth = 1)

facet_wrap(~城區,nrow=2,ncol=2)+

#箱型圖

b <-

ggplot(R_homework,aes(城區,分數))

b + geom_boxplot()

#小提琴圖

c <-

ggplot(R_homework,aes(城區,分數))

c +geom_violin(draw_quantiles = c(0.25,0.5,0.75))

3. 各個城區用戶給分和年齡關系分析

我們對散點圖進行線性擬合。從圖中可以看出,各個區域的樣本取樣較為隨機,不存在某一年齡段取樣集中的不合理現象。對圖形進行觀察,發現擬合程度都近似,各個區域打分均表現出和年齡的正相關性。其中朝陽區和東城區的擬合情況最為集中,海淀區和西城區的擬合函數更為陡峭(斜率更高)。有趣的是,各個區域25-30歲的用戶打分都在擬合函數之上,25歲以下和30歲以上大多在擬合函數之下。也就是說如果我們用擬合函數最各年齡段的滿意度預估,25-30歲區間的滿意度更有可能高於預估值,25歲以下和30歲以上區間的滿意度更有可能低於預估值。

實現語句:

#散點圖擬合年齡和分數關系

g <-

ggplot(R_homework,aes(年齡,分數))

g + geom_point(alpha =0.25)+

geom_smooth(method='lm',col='red')+

theme_bw(base_family= "Avenir",base_size = 15)+

  facet_wrap(~城區,nrow=2,ncol=2)+

  labs(x='年齡(age)')+

  labs(y='分數(score)')+

  labs(title='用戶滿意度調查(分數與年齡關系)')

4. 對「收押金」措施是否對西城區用戶滿意分有顯著影響設計A/B測試

1.原假設H0,發紅包對提升用戶滿意分沒有影響,即未發紅包對照組滿意分均值X1=發紅包實驗組滿意分均值X2

備選假設H1,發紅包可對用戶滿意分有顯著影響,即未發紅包對照組滿意分均值X1=!發紅包實驗組滿意分均值X2

因為假設是問是否有顯著影響,好的影響和不好的影響都包含在此假設內,因此採用雙側檢測。

2.使用函數t.test()計算P值。

實現方式:

Ttestdata <-read.csv("Ttestdata.csv")

scoreA <-

Ttestdata[Ttestdata$"組別"=="對照組"&Ttestdata$"城區"=="西城區", "分數"]

scoreB <-

Ttestdata[Ttestdata$"組別"=="實驗組"&Ttestdata$"城區"=="西城區", "分數"]

#進行T檢測

t.test(scoreA,scoreB,alternative= ("two.sided"),conf.level = 0.95)

計算結果:

data:  scoreA and scoreB

t = 0.2778, df = 20.926,p-value = 0.7839

alternative hypothesis:true difference in means is not equal to 0

95 percent confidenceinterval:

 -2.079380 2.720406

sample estimates:

mean of x mean of y

 5.153846 4.833333

3.按照顯著性水平α=0.05看,P值0.78大於0.05,所以原假設H0成立,不能證明收押金對用戶滿意分有顯著影響

『肆』 【R語言】--- 小提琴圖

小提琴圖 (Violin Plot) 用於顯示數據分布及其概率密度,該圖類是箱型圖和核密度圖的結合,主要用來顯示數據的分布狀況。中間的黑色粗條表示四分位數范圍,從其延伸的細黑線代表數據范圍,兩端為最大值和最小值,而白點則為中位數。

vioplot包:vioplot()函數
ggplot2包:plot()函數

[1] https://www.r-graph-gallery.com/violin.html
[2] https://www.jianshu.com/p/e8e69c561f4f

『伍』 [R語言] Heatmap繪圖經驗總結

這里隨機生成了25個0,1之間的均勻分布的隨機數,其中,行是樣本,列是特徵,如圖:

第一種方案繪制的Heatmap需要藉助於Corrplot包,我們求出dat特徵的相關系數矩陣,進一步利用corrplot函數來畫圖,在該包的官方文檔中,對於corrplot函數的參數描述可以說是非常多,這里我給出幾種常用的參數:

method 表示熱力圖中每一塊所展示的形狀,可選值有: "circle", "square", "ellipse", "number", "shade", "color", "pie";

type 表示相關系數矩陣展示的方式,比如只展示上三角或下三角或者全部展示,可選值有:「full」,「upper","lower」;

tl.pos 指定文本標簽(變數名稱)的位置,當type=full時,默認標簽位置在左邊和頂部(lt),當type=lower時,默認標簽在左邊和對角線(ld),當type=upper時,默認標簽在頂部和對角線,d表示對角線,n表示不添加文本標簽;

diag 表示對角線上取值,默認為FALSE;

cl.pos 表示圖例位置,當type=upper或full時,圖例在右方,當type=lower時,圖例在底部,不需要圖例時,需指定該參數為n;

...
下面給出方法運用:

當然,利用corrplot函數畫圖可以實現圖層的疊加,上面這張圖就是分上下兩部分完成的,其中默認的顏色樣式個人覺得還是可以的,只不過對於相關系數值會根據高低顏色深淺會發生變化,對於一些相關性低的值顏色會非常淺,所以看得不是很明顯。
關於這個包具體的的使用方法可以參考這位博主寫的文章:

這里我們還是用方案一隨機生成的矩陣,介紹用pheatmap包來繪制熱力圖。pheatmap包里關於繪制熱力圖的參數相對來說比較少,可以幫助我們快速的繪圖,這里給出一些常用參數:

color 設置漸變的顏色,通常藉助於colorRampPalette函數,比如說設置紅黃藍漸變,並在這之間分成50個等級,我們可以設置color=colorRampPalette(c("red","yellow","blue"))(50);

cluster_cols & cluster_rows 表示是否按行或列聚類,默認值為FALSE;

clustering_method 表示聚類方法,默認是complete,此外還"ward.D",「single」,「average」,等;

display_numbers 表示是否在heatmap裡面顯示數值,默認是FALSE;

show_rownames & show_colnames 表示是否顯示行名或列名;

file 設置圖片保存位置
...

下面給出方法運用

去掉邊框線可能會好看一點:

由於是隨機生成的數據,就不顯示聚類的效果(只需要把cluster_row和cluster_col刪掉即可),總體來說用pheatmap繪制熱圖會相對簡單一點,但是毫不遜色於其他包繪制的熱圖。此外,如果想對於行或列來顯示一些注釋信息(annotation),比如將特徵分成2類,每一類是不同的顏色,這里就可以先生成一個行名是特徵,列名是分類結果的數據框,然後利用annotation_row(或col)參數,將生成的數據框賦給它即可,具體可以參考這位博主的文章:

接下來介紹的ComplexHeatmap包就比較全面了,他可以兼容pheatmap函數的所有功能,可以說是pheatmap包的加強版,能夠創建更加復雜的熱力圖,如果你會pheatmap包的應用,那麼在ComplexHeatmap包裡面,你只需要指明是該包下的pheatmap函數即可使用(ComplexHeatmap::pheatmap())。接下來列舉出一些常用參數:

name 、column_title、row_title設置圖例、列標題與行標題的名字;

column_title_side & row_title_side 設置列標題與行標題的位置,之注意:列標題只能跟"top"或"buttom"參數,行標題只能跟"left"或"right"參數;

column_names_side & row_names_side 設置行名與列名的位置,後面跟的是位置參數,如"left"、"top"等;

column_names_rot & row_names_rot 設置行名與列名的傾斜角度,後面跟的是角度,如0、30、90等;

column_names_gp & row_names_gp 設置行名與列名的顏色,比如 column_names_gp =gpar(col=rep("red",5));

column_title_gp & row_title_gp 設置列與行標題的顏色,注意:這個需要和聚類分割的數量來決定,要指定row_split & column_split,顏色的設置才能生效;

col 設置漸變的顏色向量參數,這里推薦用RColorBrewer包中的顏色,比如 col = rev(brewer.pal(n = 7, name ="RdYlBu"));

cluster_rows & cluster_columns 表示是否對行列進行聚類,默認是TRUE;

cluster_rows & cluster_columns 表示是否對行列進行聚類,默認是TRUE,如果是特定值,則表示對聚類樹進行處理;

row_dend_reorder & column_dend_reorder 表示將行或列進行排序,默認是TRUE,所以我們在利用這個包繪制相關系數熱力圖時,會看到對角線不是1,那麼我們就需要檢查是否設置了這個參數;

show_column_dend & show_row_dend 表示是否展示行與列的聚類樹;

...

下面利用上述隨機生成的數據來繪制heatmap:

最值得一提的是,cluster_rows參數,可以結合hlust函數來使用,並通過color_branches函數來為不同類別設置顏色,使得整個heatmap看起來更加美觀。如果我們要顯示聚類後的數據分割並命名,我們可以這樣:

如若想得到更加詳細的說明,可以看ComplexHeatmap包的官方文檔,或者參見這位博主的文章:

當然,畫heatmap怎麼能少的了ggplot2呢,我們在利用ggplot畫圖時,只需要設置scale_fill_gradient即可,例如:scale_fill_gradient(low = "yellow", high = "red") 表示顏色從黃色到紅色漸變。注意要把數據處理成ggplot所需要的樣式!下面來繪制heatmap:

如果要實現聚類樹在heatmap上,我們需要利用ggtree函數,分別繪制聚類樹與熱力圖,最後用aplot包進行拼接即可。

由於ComplexHeatmap包繪制的熱力圖是一個Heatmap對象,故他與其他圖形不同,自身可以與其他Heatmap對象結合,我們只需要利用"+"號或者"%v%"連接符對多個Heatmap對象進行水平或垂直連接就可以了。

當我們需要將pheatmap包繪制的熱力圖與ggplot畫的其他圖貼在一起時,我們可以利用ggplotify包來實現,具體操作流程為:

我們用上回利用iris數據集畫組合小提琴圖的例子,進一步組合heatmap:

當然ggplot也可以畫heatmap,這里不再闡述,對於上面幾種繪圖方案,我們只需選取一種最美觀,最有效的方式來畫heatmap即可。

『陸』 R語言實戰-基本圖形

條形圖使用的函數為'barplot(x)',其中x為向量

以關節炎研究包vcd為演示對象

治療類型和改善情況的列聯表

條形圖並不一定要基於計數數據或頻率數據。你可以使用數據整合函數將結果傳遞給barplot()函數。
來創建表示均值、中位數、標准差等的條形圖。

棘狀圖對堆砌條形圖進行了重縮放,這樣每個條形的高度均為1,每段的高度即表示比例。

增加名稱、顏色和填充顏色

可比較的密度圖

箱線圖(又稱盒須圖)通過繪制連續型變數的五數總括,即最小值、下四分位數(第25百分位數)、中位數(第50百分位數)、上四分位數(第75百分位數)以及最大值,描述了連續型變數的分布。箱線圖能夠顯示出可能為離群點(范圍±1.5*IQR以外的值,IQR表示四分位距,即上四分位數與下四分位數的差值)的觀測。

並列箱線圖

對box圖的參數進行修改

雙因素交叉的箱式圖

小提琴圖(violin plot)是箱線圖與核密度圖的結合。需要安裝vioplot包

點圖提供了一種在簡單水平刻度上繪制大量有標簽值的方法。

分組、排序、著色後的點圖