免疫细胞浸润百分比堆积条形图-代码

发布时间 2023-12-03 17:10:34作者: 小高不高

免疫细胞浸润百分比堆积条形图

该条形图展示的是每个TCGA的肿瘤样本中各个免疫细胞所占的比例。

输入数据

该输入数据的每一行显示的是一个TCGA的肿瘤样本中各个免疫细胞所占的比例。每一行的数据用制表符“\t”分隔。

input.txt

代码

setwd("")    #工作目录

## 读取文件,整理
data <- read.table("input.txt", sep="\t", header = T, row.names = 1, check.names = F)
data <- t(data)  
col <- rainbow(nrow(data), s = 0.7, v = 0.7)  # 按变量数量设置颜色。s(saturation,饱和度)和v(value,明度)用于HSV颜色空间的描述。

## 绘制
pdf("barplot1.pdf", height = 10, width = 20)
# 图形属性设置
par(las = 1, mar = c(8,5,4,16),  # las用于定义轴标签的样式。mar用于设置图形的边距。
    mgp = c(3,0.1,0), cex.axis = 1.5)  # mgp用于设置轴标题、轴标签和轴线的边距线。cex.axis用于轴注释,相对于cex当前设置的放大倍率。
# 画条形图
a1 <- barplot(data, col = col,  # 设置颜色
              yaxt = "n", xaxt = "n",  # 不显示x、y坐标轴
              ylab = "Relative Percent",  # y轴标签
              cex.lab = 1.8)  # 标签文字大小
# 画坐标轴
a2 <- axis(side = 2, tick = FALSE, labels = FALSE)  # side用于指定要在绘图的哪一侧绘制轴。tick用于指定是否绘制刻度线和轴线。labels用于指定是否在刻度线处进行(数字)注释
axis(side = 2, a2, paste0(a2*100, "%"))  # side = 2指定在绘图的左侧绘制轴
axis(side = 1, a1, labels = FALSE)  # side = 1指定在绘图的下方绘制轴
# 添加坐标轴标签
par(srt = 60, xpd = TRUE)  # srt表示以度为单位的字符串旋转。xpd用于设置图形打印裁剪方式
text(x = a1, y = -0.02, labels = colnames(data), adj = 1, cex = 0.6)  # adj(adjustment)指定标签的x调整,0 表示左/下,1 表示右/上。cex(character expansion),字体大小。
# 添加图例
par(srt = 0)  # srt表示graphics以度为单位的字符串旋转。
ytick2 <- cumsum(data[, ncol(data)])  # cumsum(Cumulative Sums,累计总和),将data的最后一列累计总和。
ytick1 <- c(0, ytick2[-length(ytick2)])  # 将上述总和去掉最后一位,第一位前加0
legend(x = par("usr")[2]*0.98, y = par("usr")[4], 
       legend = rownames(data), 
       col = col, pch = 15, bty = "n", cex = 1.3)  # pch(point character),点形状。bty(box type),在图例周围绘制的框的类型。cex,字符扩展因子
dev.off()  # 关闭并保存图形