绘制圈
# 绘制人染色体圈图 ------------------------------------------------------
# 导入内建人类染色体数据
data(UCSC.HG19.Human.CytoBandIdeogram)
#查看数据
head(UCSC.HG19.Human.CytoBandIdeogram)

# 设置染色体数据
cyto.info <- UCSC.HG19.Human.CytoBandIdeogram
# 设置不显示的染色体,如 c(1,3)
chr.exclude <- NULL
# 设置内部环形个数
tracks.inside <- 10
# 设置外部环形个数
tracks.outside <- 0
# 导入上面四个基本参数
RCircos.Set.Core.Components(cyto.info, chr.exclude,tracks.inside, tracks.outside)
# 列出所有绘图参数
RCircos.List.Plot.Parameters()
# 绘制染色体图形,默认方法显示染色体名称。
RCircos.Set.Plot.Area()
RCircos.Chromosome.Ideogram.Plot()

绘制基因
# 添加基因名称与连线 ------------------------------------------------------
# 加载内置的RCircos.Gene.Label.Data数据集
data(RCircos.Gene.Label.Data);
head(RCircos.Gene.Label.Data)

# 指定内容在内侧的环形还是外侧的环形生成
side <- "in";
# 指定内容在第几个环形生成
track.num <- 1;
# 绘图
RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data, track.num, side);

# 在染色体上添加基因名称, 指定内容在第几个环形生成
name.col <- 4;
track.num <- 2;
# 绘图
RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data, name.col,track.num, side);

添加热图
# 添加热图类型的环形 ---------------------------------------------------------------
# 加载内置的RCircos.Heatmap.Data数据集
data(RCircos.Heatmap.Data);
head(RCircos.Heatmap.Data)
# 指定以第6列数据生成热图
data.col <- 6;
# 指定内容在第5个环形生成
track.num <- 5;
# 指定内容在内侧的环形生成
side <- "in";

# 绘图
RCircos.Heatmap.Plot(RCircos.Heatmap.Data, data.col, track.num, side);

添加散点图类型的环形 -------------------------------------------------------------
# 加载内置的RCircos.Scatter.Data数据集
data(RCircos.Scatter.Data);
head(RCircos.Scatter.Data)

# 指定以第5列数据图形中散点纵坐标
data.col <- 5;
# 指定图形在第6个环形生成
track.num <- 6;
# 指定图形在内侧环形生成
side <- "in"
# 指定数据大于1的点以红色显示,小于数据1的点以蓝色显示
by.fold <- 1;
# 绘图
RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col,track.num, side, by.fold);

添加折线图类型的环形 -------------------------------------------------------------------
# 加载内置的RCircos.Line.Data数据集
data(RCircos.Line.Data);

# 指定以第5列数据做为图形中拆线的纵坐标
data.col <- 5;
# 指定图形在第7个环形生成
track.num <- 7;
# 指定图形在内侧环形生成
side <- "in";
# 将chromosome列加入 `chr`,不然会因为数据格式不一致报错
RCircos.Line.Data$chromosome = paste0("chr",RCircos.Line.Data$chromosome)
# 绘图
RCircos.Line.Plot(RCircos.Line.Data, data.col, track.num, side);

添加直方图类型的环形 --------------------------------------------------------------------
# 加载内置的RCircos.Histogram.Data数据集
data(RCircos.Histogram.Data);
# 指定以第4列数据做为图形中直方的纵坐标
data.col <- 4;
# 指定图形在第8个环形生成
track.num <- 8;
# 指定图形在内侧环形生成
side <- "in";
# 绘图
RCircos.Histogram.Plot(RCircos.Histogram.Data, data.col, track.num, side);

添加网络图类型的环形 --------------------------------------------------------------------
# 加载内置的RCircos.Tile.Data数据集
data(RCircos.Tile.Data);
# 指定图形在第9个环形生成
track.num <- 9;
# 指定图形在内侧环形生成
side <- "in";
# 绘图
RCircos.Tile.Plot(RCircos.Tile.Data, track.num, side);

添加连线
# 添加一个或多个基因间的联系曲线 ----------------------------------------------------------
# 加载内置的RCircos.Link.Data数据集
data(RCircos.Link.Data);
head(RCircos.Link.Data)

# 指定图形在第11个环形生成
track.num <- 11;
# 绘图
RCircos.Link.Plot(RCircos.Link.Data, track.num, TRUE);
# 加载内置的RCircos.Ribbon.Data数据集
data(RCircos.Ribbon.Data);

合并后的代码
rm(list=ls())
# 载入包
library(RCircos)
# -------------------------- 保存为PDF格式(矢量图)--------------------------
pdf("RCircos_complete_heatmap_gradient.pdf",
width = 10, # 宽度(英寸)
height = 10, # 高度(英寸)
paper = "special",
useDingbats = FALSE) # 避免字体兼容问题
# 绘制人染色体圈图 ------------------------------------------------------
data(UCSC.HG19.Human.CytoBandIdeogram)
cyto.info <- UCSC.HG19.Human.CytoBandIdeogram
chr.exclude <- NULL
tracks.inside <- 9
tracks.outside <- 0
# 导入核心参数
RCircos.Set.Core.Components(cyto.info, chr.exclude, tracks.inside, tracks.outside)
plot.params <- RCircos.Get.Plot.Parameters()
core.radius <- plot.params$core.radius
track.width <- plot.params$track.width
# 绘制染色体图形
RCircos.Set.Plot.Area()
RCircos.Chromosome.Ideogram.Plot()
# -------------------------- 每个轨道说明标签 --------------------------
track_labels <- list(
track1 = "基因连线",
track2 = "基因名称",
track5 = "表达量热图",
track6 = "差异表达散点",
track7 = "表达趋势折线",
track8 = "信号强度直方图",
track9 = "互作网络图",
track11 = "基因间联系曲线"
)
label_cex <- 0.7
label_col <- "black"
label_font <- 2
# 轨道1:基因连线
track1_radius <- core.radius + track.width*(1-1)
text(x = 0, y = track1_radius - track.width/2,
labels = track_labels$track1, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道2:基因名称
track2_radius <- core.radius + track.width*(2-1)
text(x = 0, y = track2_radius - track.width/2,
labels = track_labels$track2, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道5:热图
track5_radius <- core.radius + track.width*(5-1)
text(x = 0, y = track5_radius - track.width/2,
labels = track_labels$track5, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道6:散点图
track6_radius <- core.radius + track.width*(6-1)
text(x = 0, y = track6_radius - track.width/2,
labels = track_labels$track6, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道7:折线图
track7_radius <- core.radius + track.width*(7-1)
text(x = 0, y = track7_radius - track.width/2,
labels = track_labels$track7, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道8:直方图
track8_radius <- core.radius + track.width*(8-1)
text(x = 0, y = track8_radius - track.width/2,
labels = track_labels$track8, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道9:网络图
track9_radius <- core.radius + track.width*(9-1)
text(x = 0, y = track9_radius - track.width/2,
labels = track_labels$track9, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# 轨道11:基因联系曲线
track11_radius <- core.radius + track.width*(11-1)
text(x = 0, y = track11_radius - track.width/2,
labels = track_labels$track11, cex = label_cex, col = label_col, font = label_font,
adj = c(0.5, 0.5))
# -------------------------- 数据轨道绘制 --------------------------
# 基因名称与连线
data(RCircos.Gene.Label.Data)
side <- "in"
track.num <- 1
RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data, track.num, side)
name.col <- 4
track.num <- 2
RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data, name.col, track.num, side)
# 热图(关键:记录数据列用于标签计算)
data(RCircos.Heatmap.Data)
heatmap_data_col <- 6
track.num <- 5
side <- "in"
RCircos.Heatmap.Plot(RCircos.Heatmap.Data, heatmap_data_col, track.num, side)
# 散点图
data(RCircos.Scatter.Data)
data.col <- 5
track.num <- 6
side <- "in"
by.fold <- 1
RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col, track.num, side, by.fold)
# 折线图
data(RCircos.Line.Data)
data.col <- 5
track.num <- 7
side <- "in"
RCircos.Line.Data$chromosome = paste0("chr", RCircos.Line.Data$chromosome)
RCircos.Line.Plot(RCircos.Line.Data, data.col, track.num, side)
# 直方图
data(RCircos.Histogram.Data)
data.col <- 4
track.num <- 8
side <- "in"
RCircos.Histogram.Plot(RCircos.Histogram.Data, data.col, track.num, side)
# 网络图
data(RCircos.Tile.Data)
track.num <- 9
side <- "in"
RCircos.Tile.Plot(RCircos.Tile.Data, track.num, side)
# 基因间联系曲线
data(RCircos.Link.Data)
track.num <- 11
RCircos.Link.Plot(RCircos.Link.Data, track.num, TRUE)
data(RCircos.Ribbon.Data)
# -------------------------- 关闭PDF设备 --------------------------
dev.off()

保存清晰图片