單細(xì)胞繪圖系列:
- Seurat繪圖函數(shù)總結(jié)
- 使用ggplot2優(yōu)化Seurat繪圖
- scRNAseq靈活的點(diǎn)圖繪制:FlexDotPlot
- 富集分析結(jié)果雷達(dá)圖
- DoHeatmap的優(yōu)化+ComplexHeatmap繪制帶特定基因的單細(xì)胞熱圖
- 不同單細(xì)胞群之間的相關(guān)性分析
- 單細(xì)胞RunPCA()結(jié)果解讀+DimHeatmap的用法
- 筛匕幔基圖:不同分辨率下的細(xì)胞分群可視化
- 單細(xì)胞亞群差異基因火山圖
- 甜甜圈圖展示細(xì)胞比例
- 單細(xì)胞密度散點(diǎn)圖的繪制
- ??棒棒糖圖/啞鈴圖的繪制
適合于同時(shí)展示不同組樣本上調(diào)和下調(diào)基因數(shù),和棒棒糖圖/啞鈴圖異曲同工
# 加載R包脏嚷,
library(ggplot2)
library(reshape2)
# 讀取雙向柱形圖演示數(shù)據(jù)
df= read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt")
head(df)
# X Up Down
# 1 Pathway1 35 14
# 2 Pathway2 27 10
# 3 Pathway3 58 93
# 4 Pathway4 24 82
# 5 Pathway5 4 71
# 6 Pathway6 58 79
用自己的數(shù)據(jù)繪圖時(shí),把數(shù)據(jù)整理成上面df的格式即可泳秀。
# 把數(shù)據(jù)轉(zhuǎn)換成ggplot常用的類型(長數(shù)據(jù))
df = melt(df) # melt出自reshape2包
head(df) # 查看轉(zhuǎn)換完成的數(shù)據(jù)的前幾行
# X variable value
# 1 Pathway1 Up 35
# 2 Pathway2 Up 27
# 3 Pathway3 Up 58
# 4 Pathway4 Up 24
# 5 Pathway5 Up 4
# 6 Pathway6 Up 58
# 繪圖
df$X <- factor(df$X ,levels = unique(df$X))
ggplot(df, aes(
x = X,
y = ifelse(variable == "Up", value, -value), # 判斷分組情況收擦,將兩個(gè)柱子畫在0的兩側(cè)
fill = variable)) +
theme_bw()+
geom_bar(stat = 'identity')+ # 畫柱形圖
coord_flip()+ # x軸與y軸互換位置
geom_text( # 在圖形上加上數(shù)字標(biāo)簽
aes(label=value, # 標(biāo)簽的值(數(shù)據(jù)框的第三列)
# vjust = ifelse(variable == "Up", -0.5, 1), # 垂直位置溪食。如果沒有coord_flip(),則可以取消這行注釋
hjust = ifelse(variable == "Up", -0.4, 1.1) # 水平位置
),
size=2 # 標(biāo)簽大小
)+
scale_y_continuous( # 調(diào)整y軸
labels = abs, # 刻度設(shè)置為絕對值
expand = expansion(mult = c(0.1, 0.1)))+ # 在y軸的兩側(cè)半火,留下一部分的空白位置越妈,防止加標(biāo)簽的時(shí)候,顯示不全
scale_x_discrete(limits = rev(levels(df$X)))+ #將x軸倒序钮糖,讓pathway1在上面
scale_fill_manual(values = c("#F08080","#9370DB"))+ #更改顏色
labs(title="Regulated genes", x="Pathways", y="Number of genes")+ #設(shè)置標(biāo)題和橫縱坐標(biāo)標(biāo)簽
theme(plot.title = element_text(hjust = 0.5)) #標(biāo)題居中