『壹』 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包
點圖提供了一種在簡單水平刻度上繪制大量有標簽值的方法。
分組、排序、著色後的點圖