library(circlize)
circos.initializeWithIdeogram(species = "hg38")

cnv_data <- read.delim("C:/Users/MY/Desktop/染色体异位/CNV_WY/L6.CNV.xls", stringsAsFactors = FALSE)
cnv_data <-  cnv_data[c(1,2,3,5)]
colnames(cnv_data)<-c("chr","start","end","value")
cnv_data
virtual_data <- data.frame(
  chr = c("chrX", "chrY"),
  start = c(0, 0),  # 虚拟位置
  end = c(0, 0),
  value = c(0, 0)  # 虚拟值
)
range(cnv_data$value)
ylim <- c(-1100, 100)
y_ticks <- seq(-1100, 100, by = 200)
col_fun <- colorRamp2(c(-1100, 0, 7), c("blue", "blue", "red"))
data <- rbind(cnv_data, virtual_data)
data
circos.genomicTrackPlotRegion(data, panel.fun = function(region, value, ...) {
  col = col_fun(value)  # 根据 y 轴值获取颜色
  # 添加散点
  circos.genomicPoints(region, value, pch = 16, col = col, cex = 0.5)
  
  # 添加水平网格线
  for(y in y_ticks) {
    cell.xlim <- get.cell.meta.data("cell.xlim")
    circos.lines(cell.xlim, y = rep(y, 2), col = "grey", lty = 2)
  }
}, ylim = ylim)



circos.yaxis(side = "left", 
             at = seq(-1100, 100, length.out = 3),  # 根据数据范围设置刻度
             labels.cex = 0.5,  # 刻度标签大小
             sector.index = get.all.sector.index()[1])  




# 定义染色体易位数据
#  假设 A 组（易位在HBV整合位点一侧）和 B 组（易位由于HBV）各有两种易位情况
translocations <- read.delim("L6.txt", stringsAsFactors = FALSE)
translocations
# 绘制染色体易位弦图
for (i in 1:nrow(translocations)) {
  if (translocations$group[i] == "A") {
    lty <- 2  # A组用虚线
  } else if (translocations$group[i] == "B") {
    lty <- 1  # B组用实线
  }
  circos.link(
    translocations$chr1[i], translocations$pos1[i],
    translocations$chr2[i], translocations$pos2[i],
    h = 0.4, col = translocations$color[i], lty = lty, lwd = 2  # 设置线的厚度为2
  )
}

# 清除绘图环境
circos.clear()