搜索
查看: 4366|回复: 2

ggplot2富集分析图

[复制链接]

11

主题

14

帖子

178

积分

版主

Rank: 7Rank: 7Rank: 7

积分
178
发表于 2017-4-14 11:08:19 | 显示全部楼层 |阅读模式
ggplot2 富集分析图
功能:是用来展示组成的事物类别在相应类别总体分布中的比例
本质:将相应类别的总体的分布考虑进去,得到相应的比例
组成:Y轴以注释信息类别X轴以 富集因子 为主进行转换
GO富集分析:GO在指定基因集中的富集分析
基因富集分析是指将基因按照先验知识,也就是基因组注释信息进行分类。





[Actionscript3] 纯文本查看 复制代码
# Clear workspace
rm(list = ls())
library(ggplot2)
#library(ggplot2)
#set your path 
path<-setwd("D:/Test/R/R_paint")
dat <- read.table("umf.txt", header=T,sep="\t")
dat
#pdf(file="rich.pdf",width=10,height = 6)
png("rich.png",width=600,height=800)
ggplot(data=dat,aes(x=Rich_factor,y=Description,colour=qValue,size=Gene_number)) +
 geom_point() +scale_size_area() +
 scale_colour_gradientn(colours=c("red","yellow","green","blue"))+
 labs(x="Rich factor",y="Pathway of KEGG",title= "up KEGG enrich of DEGs between Middle and Fresh")+
 #theme(plot.title=element_text(size=16,colour="black",hjust=0.5))+
 theme(plot.title=element_text(size=16,colour="black", hjust=0.5))+
 theme(axis.title.y=element_text(size=14,colour="black"))+
 theme(axis.title.x=element_text(size=14,colour="black"))+
 theme(legend.text=element_text(size=14,colour="black"),legend.title=element_text(size=12))+ 
 theme(axis.text.x=element_text(size=14,colour="black"))+
 theme(axis.text.y=element_text(size=14,colour="black"))+
 theme(panel.grid.minor=element_blank())
dev.off()

参考:
http://www.cs.tau.ac.il/~rshamir/ge/09/scribe/lec14a.pdf


测试数据在附件


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:TCGA中miRNA数据的提取
下一篇:加载RDAVIDWebService包遇到的rjava问题
回复

使用道具 举报

2

主题

34

帖子

777

积分

高级会员

Rank: 4

积分
777
发表于 2017-5-21 18:36:09 | 显示全部楼层
本帖最后由 x2yline 于 2017-5-21 18:54 编辑

[Python] 纯文本查看 复制代码
with open('umf.txt', 'r') as f:
    data = {}
    all_lines = f.readlines()
    line = all_lines[0]
    item_list = line.split()
    for i in item_list:
        data = []
    for line in all_lines[1:]:
        for i in item_list:
            data.append(line.split('\t')[item_list.index(i)].strip().strip('"'))
print('Plotting...\n')
def enrichment_plot(data, item_list):
    '''data为字典
    其键为item_list
    item_list的顺序为[pathway_discription,
    hit_gene_number, q_val, rich_factor]'''
    import matplotlib.pyplot as plt
    import numpy as np
    import matplotlib as mpl
    x = [float(i) for i in data[item_list[3]]]
    y = [float(j) for j in range(len(data[item_list[0]]))]
    qvals = [float(i) for i in data[item_list[2]]]

    parameters =  np.linspace(np.min(qvals), np.max(qvals), len(y))
    norm = mpl.colors.Normalize(
        vmin=np.min(parameters),
        vmax=np.max(parameters))
    c_m = mpl.cm.spring
    s_m = mpl.cm.ScalarMappable(cmap=c_m, norm=norm)
    s_m.set_array([])
    fig = plt.figure(figsize=(11,12))
    fig.patch.set_facecolor('w')
    fig.suptitle('KEGG Enrichment', fontsize=24)
    ax = fig.add_axes([0.43, 0.1, 0.5, 0.8])

    ax.set_ylim([np.min(y), np.max(y)])

    ax.set_yticks([ j for j in range(len(data[item_list[0]]))])
    ax.set_yticklabels(data[item_list[0]], fontsize=18, color='k')

    for i in range(len(data[item_list[3]])):
        ax.plot(float(data[item_list[3]]), i, 'bo',
                markersize=float(data[item_list[1]])*1.2+2 ,clip_on=False,
                color=s_m.to_rgba(qvals),
                 markeredgewidth=0.0)
    ax.set_xlim([np.min(x) - (np.max(x) - np.min(x))/20, np.max(x) + (np.max(x) - np.min(x))/20])
    ax.set_xticks(np.linspace(np.min(x) - (np.max(x) - np.min(x))/20, np.max(x) + (np.max(x) - np.min(x))/20, 5))
    ax.set_xticklabels([round(float(i), 2) for i in np.linspace(np.min(x) - (np.max(x) - np.min(x))/20, np.max(x) + (np.max(x) - np.min(x))/20, 5)])
    ax.get_xaxis().tick_bottom()
    ax.set_xlabel('Rich factor', fontsize=20)
    ax.set_ylabel('Kegg Pathways', fontsize=20)
    ax.get_yaxis().tick_left()
    ax.get_xaxis().set_tick_params(direction='out')
    ax.get_yaxis().set_tick_params(direction='out')
    ax.spines['right'].set_visible(False)
    ax.spines['top'].set_visible(False)
    ax.spines['left'].set_position(('outward', 10))
    ax.spines['bottom'].set_position(('outward', 30))
    axbar = fig.add_axes([0.85, 0.4, 0.1, 0.3])
    axbar.set_axis_off()
    cb = plt.colorbar(s_m)
    cb.outline.set_visible(False)
    cb.set_label('Q value', labelpad=-20, y=1.07, rotation=0)
    axmarker = fig.add_axes([0.89, 0.75, 0.1, 0.1])
    axmarker.set_axis_off()
    axmarker.text(0, 1.2, 'Gene number', ha='center')
    for i in range(3):
        axmarker.plot(0, i*0.5, 'ko', markersize=(i*5+5)*1.2+2, clip_on=False)
        axmarker.text(0.02, i*0.5, str(i*5+5), clip_on=False, color='k', ha='left', va='center')
    plt.savefig('enrichment.png', dpi=100)
    plt.show()
enrichment_plot(data, item_list)

试着用python实现了一下这个效果:
spring风格和autumn风格









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

6

主题

36

帖子

465

积分

中级会员

Rank: 3Rank: 3

积分
465
发表于 2017-5-7 23:28:15 | 显示全部楼层
谢谢老哥,向老哥学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-10-21 09:19 , Processed in 0.074636 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.