本人虽在生信行业浑水摸鱼了几年,但是依旧处于中下等技术水平,为了避免自己一直处于下游状态,遇到问题抓紧记录一哈子!
一、upgm聚类图
今日在绘制upgm图出现问题,出现图这样的问题。X轴标签和标题sample嵌套,糊在一起了
经过网上一顿搜索,已经解决,具体看如下代码:
library(vegan)
theme_set(theme_bw())
library(jsonlite)
library(optparse)
data <- read.delim(file="Phylum.txt", header=T, row.names=1, stringsAsFactors=F, comment.char="", sep="\t", check.names=F)
data <- data[apply(data, 1, sd)>0,]
data <- data[,apply(data, 2, max)>0]
meta <- as.data.frame(fromJSON("info.json")$sampleInfo)
meta <- meta[,c("id", "group")]
outname <- "upgm"
d <- vegdist(t(data), method="bray")
upgma <- hclust(d, method="average")
png(paste0(outname, ".png"), width=1580, height=1080, res=300)
par(mai=c(2, 1, 1, 1), cex.lab=1.5)
plot(as.dendrogram(upgma), main = 'UPGMA\n(Bray-curtis distance)', sub = '', ylab = 'Height')
mtext('Sample', side = 1, line = 7, cex = 1.5)
dev.off()
关键代码语句,解决问题的两行:
par(mai=c(2, 1, 1, 1), cex.lab=1.5)
plot(as.dendrogram(upgma), main = 'UPGMA\n(Bray-curtis distance)', sub = '', ylab = 'Height')
mtext('Sample', side = 1, line = 7, cex = 1.5)
逐行解释一下:
mai=c(2, 1, 1, 1)
: 设置边距(margin),单位为英寸。顺序为 c(bottom, left, top, right)。bottom = 2
:底部边距为 2 英寸。left = 1
:左侧边距为 1 英寸。top = 1
:顶部边距为 1 英寸。right = 1
:右侧边距为 1 英寸。
cex.lab=1.5
: 设置坐标轴标签的字体大小为 1.5 倍。side = 1
:表示 x 轴(底部)。line = 7
:表示文本距离 x 轴的行数,可以调整这个值来改变标题的位置。cex = 1.5
:设置文本的大小为 1.5 倍。
改后图片如下:
参考帖子: