数据提取及ggplot2画图

以CLL数据包为例:

1、提取所需数据

suppressPackageStartupMessages(library(CLL))
data(sCLLex)
sCLLex  #直接查看数据集(S4对象)中的信息
exprSet=exprs(sCLLex)   
##sCLLex是依赖于CLL这个package的一个对象
pdata=pData(sCLLex)
group_list=as.character(pdata[,2]) #pdata[,2]提取后为因子,需转为字符串
exprSet[1:5,1:5]  #当基因集较大时,查看部分数据可减少内存消耗
gpl = sCLLex@annotation  #获取平台信息及注释包

2、安装注释包

#BiocManager::install('hgu95av2.db')  #安装注释包
library(hgu95av2.db)
ls("package:hgu95av2.db") #查看注释包的内容

ids=toTable(hgu95av2SYMBOL)  #toTable可将Bimap对象转为数据框结构
save(ids,exprSet,pdata,file = 'input.Rdata')

3、探索探针与基因symbol的对应关系

length(unique(ids$symbol))  #查看共有多少个symbol,一般有多个探针对应一个symbol
tail(sort(table(ids$symbol)))  ##查看基因对应最多多少个探针
table(sort(table(ids$symbol)))  #显示总的symbol对应的探针数量并table

plot(table(sort(table(ids$symbol))))

table(rownames(exprSet) %in% ids$probe_id)  #注意两个数据集的先后顺序,%in%表示前者中的变量与后者一一比较,返回布尔值

4、对数据进行筛选,去重:

exprSet=exprSet[rownames(exprSet) %in% ids$probe_id,]  #取得与注释包交集后的表达矩阵
dim(exprSet)

ids=ids[match(rownames(exprSet),ids$probe_id),]  #match相当于%in%,可以匹配返回逻辑值,也可以将前者数据的顺序匹配给后者,使表达矩阵中的probe_id顺序与ids中的一致
identical(ids$probe_id,rownames(exprSet))  #identical判断两个对象是否一致
dat=exprSet
ids$median=apply(dat,1,median) #ids新建median这一列,列名为median,同时对dat这个矩阵按行操作,取每一行的中位数,将结果给到median这一列的每一行
ids=ids[order(ids$symbol,ids$median,decreasing = T),]#先对ids$symbol排序,在此基础上按照ids$median中位数从大到小排列的顺序排序,将对应的行赋值为一个新的ids
ids=ids[!duplicated(ids$symbol),]#将symbol这一列取取出重复项,'!'为否,即取出不重复的项,去除重复的gene ,保留每个基因最大表达量结果
dat=dat[ids$probe_id,] #新的ids取出probe_id这一列,将dat按照取出的这一列中的每一行组成一个新的dat
rownames(dat)=ids$symbol#把ids的symbol这一列中的每一行给dat作为dat的行名
dat[1:4,1:4]  #保留每个基因ID第一次出现的信息
dim(dat)

5、选择对应的数据作图(基础作图):

exprSet=dat
#第一个样本的所有基因的表达量作图
boxplot(exprSet[,1])  #箱线图
p<-hist(exprSet[,1]) #直方图
barplot(exprSet[,1]) #条形图
plot(density(exprSet[,1]))  #单独核密度图
polygon(density(exprSet[,1]),col="red", border="blue")  #多边形绘制

6、ggplot2作图:

library(reshape2)
exprSet_L=melt(exprSet)
colnames(exprSet_L)=c('probe','sample','value')
exprSet_L$group=rep(group_list,each=nrow(exprSet))
head(exprSet_L)

##绘图
### ggplot2 
library(ggplot2)
p=ggplot(exprSet_L,
         aes(x=sample,y=value,fill=group))+geom_boxplot()
print(p)  ##箱线图,fill映射到group
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_violin()+theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1))  #小提琴图,theme(axis.text.x = element_text() 调整x轴刻度文字的角度
print(p)
p=ggplot(exprSet_L,aes(value,fill=group))+geom_histogram(bins = 200)+facet_wrap(~sample, nrow = 4)  #直方图,用sample对值进行分面facet_wrap
print(p)
p=ggplot(exprSet_L,aes(value,col=group))+geom_density()+facet_wrap(~sample, nrow = 4)  #密度图,facet_wrap分面
print(p) 
p=ggplot(exprSet_L,aes(value,col=group))+geom_density()  
print(p)
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_boxplot()
p=p+stat_summary(fun="mean",geom="point",shape=23,size=3,fill="red") #在箱线图框内加均值的点
p=p+theme_set(theme_set(theme_bw(base_size=20)))
p=p+theme(text=element_text(face='bold'),axis.text.x=element_text(angle=30,hjust=1),axis.title=element_blank())  #将图中的全部文本字体设为粗体,x轴标签设为30度倾斜,将坐标轴的标签文字关闭
print(p)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352