R circlize基础绘图

setwd("D:/desktop/snp可视化/")
library(circlize)

#----initialize----
chr <- read.csv("zb1_chr_length.csv")
head(chr)
circos.genomicInitialize(chr,axis.labels.cex = 0.8,
                         labels.cex =1)
# 使用 circos.genomicInitialize 函数初始化 circos 绘图
# `chr` 参数为染色体长度的数据框
# `axis.labels.cex` 参数设置坐标轴标签的字体大小
# `labels.cex` 参数设置其他标签(e.g., 染色体名字)的字体大小

#----gc content----
gc <- read.table("zb1s3.genome.gc",header = T)
# 创建一个圆环图中的基因组轨道
circos.genomicTrack(
  gc,                            # 使用上述读取到的数据框作为输入数据
  track.height = 0.1,            # 设置轨道的高度为0.1
  bg.col = '#EEEEEE6E',          # 设置背景颜色为'#EEEEEE6E'
  bg.border = NA,                # 设置背景边框颜色为透明(NA)
  
  # 使用自定义函数作为轨道的面板函数(panel function)
  panel.fun = function(region, value, ...) {
    # 在轨道上绘制基因组线条(region为基因组区域,value为对应的值)
    circos.genomicLines(region, value, col = '#4862AC', lwd = 0.35, ...)
    
    # 在轨道上绘制水平参考线
    circos.lines(c(0, max(region)), c(35.31, 35.31), col = '#4862AC', lwd = 0.15, lty = 2)
    
    # 绘制y轴刻度线和标签
    circos.yaxis(labels.cex = 0.2, lwd = 0.1, tick.length = convert_x(0.15, 'mm'))
  }
)
#----gene density---- 
# 读取名为"all.gene.gff.csv"的文件,并将其作为数据框存储在变量"gene"中
gene <- read.csv("all.gene.gff.csv")

# 输出"gene"数据框的前几行
head(gene)

# 计算基因密度(每百万个碱基)。
# 选择"type"为"gene"的数据,并选取前3列(chromosome、start和end)作为输入数据
den <- genomicDensity(gene[gene$type=='gene',][1:3], window.size = 1e6, count_by = "number")

# 找出基因密度的最大值
value_max <- max(den$value)

# 定义颜色选择函数,使用colorRampPalette生成颜色选项
colorsChoice <- colorRampPalette(c('white', '#7FCBA3'))

# 根据最大值和颜色选项生成颜色映射
color_assign <- colorRamp2(breaks = c(0:value_max), col = colorsChoice(value_max + 1))

# 在圆环图的区域绘制基因密度轨道
circos.genomicTrackPlotRegion(
  den,                                # 使用上述计算得到的基因密度作为输入数据
  track.height = 0.1,                 # 设置轨道的高度为0.1
  stack = TRUE,                       # 将区域叠加显示
  bg.border = NA,                     # 设置背景边框颜色为透明(NA)
  
  # 使用自定义函数作为轨道的面板函数(panel function)
  panel.fun = function(region, value, ...) {
    # 在区域上绘制矩形,并根据基因密度的值分配颜色
    circos.genomicRect(region, value, col = color_assign(value[[1]]), border = NA, ...)
  }
)

# 计算mRNA密度(每百万个碱基)
genomicDensity(gene[gene$type=='mRNA',][1:3], window.size = 1e6, count_by = "number")

# 在圆环图中绘制mRNA密度轨道
circos.genomicDensity(
  gene[gene$type=='mRNA',][1:3],      # 选择"type"为"mRNA"的数据,并选取前3列作为输入数据
  col = c("#FBD683"),                 # 设置颜色为"#FBD683"
  track.height = 0.1,                 # 设置轨道的高度为0.1
  bg.border = NA,                     # 设置背景边框颜色为透明(NA)
  bg.col = "#EEEEEE6E"                # 设置背景颜色为"#EEEEEE6E"
)

# 计算非编码RNA密度(包括miRNA、rRNA、snRNA和tRNA)
genomicDensity(
  gene[gene$type=='miRNA' | gene$type=='rRNA' | gene$type=='snRNA' | gene$type=='tRNA',][1:3], 
  window.size = 1e6, count_by = "number")

# 在圆环图中绘制非编码RNA密度轨道
circos.genomicDensity(
  gene[gene$type=='mRNA',][1:3],      # 选择"type"为"mRNA"的数据,并选取前3列作为输入数据
  col = c("#F26D42"),                 # 设置颜色为"#F26D42"
  track.height = 0.1,                 # 设置轨道的高度为0.1
  bg.border = NA,                     # 设置背景边框颜色为透明(NA)
  bg.col = "#EEEEEE6E"                # 设置背景颜色为"#EEEEEE6E"
)

#-----绘制图例-----
library(ComplexHeatmap)
library(stringr)

# 创建GC图例
gc_legend <- Legend(
  at = 1, # 图例中的位置,默认为1
  labels = c(str_c('GC % ( Average: ', 35.31, ' % )')), # 图例中显示的标签
  labels_gp = gpar(fontsize = 8), # 图例字体大小
  grid_height = unit(0.5, 'cm'), # 图例的高度
  grid_width = unit(0.5, 'cm'), # 图例的宽度
  type = 'lines', # 图例类型为线
  background = '#EEEEEE6E', # 图例的背景颜色
  legend_gp = gpar(col = 'blue', lwd = 0.5) # 图例的样式,蓝色边界和0.5的线宽
)

# 创建基因密度图例
gene_lengd <- Legend(
  at = round(seq(0, max(den$value), length.out = 6), 0), # 图例的位置,使用最大值和刻度数来计算位置
  labels_gp = gpar(fontsize = 8), # 图例字体大小
  col_fun = colorRamp2(round(seq(0, max(den$value), length.out = 6), 0),
                       colorRampPalette(c('white', '#7FCBA3'))(6)), # 图例的颜色变化
  title_position = 'topleft', # 图例标题的位置
  title = 'Gene density', # 图例标题
  legend_height = unit(2, 'cm'), # 图例的高度
  title_gp = gpar(fontsize = 9) # 图例标题的字体样式
)

# 创建mRNA图例
mRNA_legend <- Legend(
  at = 1, # 图例中的位置,默认为1
  labels = c('mRNA'), # 图例中显示的标签
  labels_gp = gpar(fontsize = 8), # 图例字体大小
  title_gp = gpar(fontsize = 9), # 图例标题的字体样式
  grid_height = unit(0.4, 'cm'), # 图例的高度
  grid_width = unit(0.4, 'cm'), # 图例的宽度
  type = 'points', # 图例类型为点
  pch = NA, # 点的样式为空,表示只显示颜色
  background = c('#FBD683') # 图例的背景颜色
)

# 设置坐标推移量
y_coord <- 0.8
x_coord <- 0.87

# 在指定位置绘制GC图例
pushViewport(viewport(x = x_coord + 0.011, y = y_coord))
grid.draw(gc_legend)

# 更新坐标推移量
y_coord <- y_coord - 0.25
upViewport()

# 在指定位置绘制基因密度图例
pushViewport(viewport(x = x_coord - 0.02, y = y_coord))
grid.draw(gene_lengd)
# 更新坐标推移量
y_coord <- y_coord - 0.2
upViewport()

# 在指定位置绘制mRNA图例
pushViewport(viewport(x = x_coord - 0.02, y = y_coord))
grid.draw(mRNA_legend)
upViewport()

# 清除圆环图
circos.clear()
# 关闭绘图设备
dev.off()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值