Skip to content

Commit

Permalink
padding now allows to wrap the vector with I()
Browse files Browse the repository at this point in the history
  • Loading branch information
jokergoo committed Mar 18, 2022
1 parent 08a04cf commit 10ca922
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 12 deletions.
1 change: 1 addition & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Changes in version 0.4.15

* low-level graphics functions won't change the index of sector and track.
* `colorRamp2()`: add `hcl_palette` argument.
* `highlight.sectors()`: argument `padding` supports to wrap the vector with `I()`.


Changes in version 0.4.14
Expand Down
5 changes: 1 addition & 4 deletions R/global.R
Original file line number Diff line number Diff line change
Expand Up @@ -883,13 +883,12 @@ get.cell.meta.data = function(name, sector.index = get.current.sector.index(),
} else if(name == "xplot") {
x = current.sector.data[c("start.degree", "end.degree")]
names(x) = NULL
x = x %% 360
return(x)
} else if(name == "yplot") {
return(c(current.cell.data$track.start - current.cell.data$track.height, current.cell.data$track.start))
} else if(name == "cell.width") {
x = current.sector.data[c("start.degree", "end.degree")]
return((x[1] - x[2]) %% 360)
return((x[1] - x[2]))
} else if(name == "cell.height") {
y = c(current.cell.data$track.start - current.cell.data$track.height, current.cell.data$track.start)
return(y[2] - y[1])
Expand All @@ -900,12 +899,10 @@ get.cell.meta.data = function(name, sector.index = get.current.sector.index(),
} else if(name == "cell.start.degree") {
x = current.sector.data["start.degree"]
names(x) = NULL
x = x %% 360
return(x)
} else if(name == "cell.end.degree") {
x = current.sector.data["end.degree"]
names(x) = NULL
x = x %% 360
return(x)
} else if(name == "cell.bottom.radius") {
return(current.cell.data$track.start - current.cell.data$track.height)
Expand Down
32 changes: 24 additions & 8 deletions R/plot.R
Original file line number Diff line number Diff line change
Expand Up @@ -641,6 +641,21 @@ highlight.sector = function(
text.vjust = 0.5
}

if(length(sector.index) == 1) {
if(inherits(padding, "AsIs")) {
padding2 = numeric(4)
padding2[c(2, 4)] = padding[c(2, 4)]/diff(get.cell.meta.data("cell.xlim", sector.index = sector.index))
padding2[c(1, 3)] = padding[c(1, 3)]/diff(get.cell.meta.data("cell.ylim", sector.index = sector.index))
padding = padding2
}
}

if(inherits(padding, "AsIs")) {
if(length(sector.index) > 1) {
stop_wrap("`padding` can be set with I() only when there is one single sector with `sector.index`.")
}
}

# if all sectors are selected
if(length(setdiff(sectors, sector.index)) == 0) {
track.index = sort(unique(track.index))
Expand Down Expand Up @@ -686,19 +701,20 @@ highlight.sector = function(
for(i in seq_along(ts)) {
track.index.vector = ts[[i]]
if(circos.par("clock.wise")) {
start.degree = get.cell.meta.data("cell.start.degree", sector.index.vector[1], track.index = 1)
end.degree = get.cell.meta.data("cell.end.degree", sector.index.vector[length(sector.index.vector)], track.index = 1)
start.degree = get.sector.data(sector.index.vector[1])["start.degree"]
end.degree = get.sector.data(sector.index.vector[length(sector.index.vector)])["end.degree"]
} else {
end.degree = get.cell.meta.data("cell.end.degree", sector.index.vector[1], track.index = 1)
start.degree = get.cell.meta.data("cell.start.degree", sector.index.vector[length(sector.index.vector)], track.index = 1)
end.degree = get.sector.data(sector.index.vector[1])["end.degree"]
start.degree = get.sector.data(sector.index.vector[length(sector.index.vector)])["start.degree"]
}
rou1 = get.cell.meta.data("cell.top.radius", sector.index.vector[1], track.index.vector[1])
rou2 = get.cell.meta.data("cell.bottom.radius", sector.index.vector[1], track.index.vector[length(track.index.vector)])

d1 = end.degree - start.degree
d1 = abs(end.degree - start.degree)
d2 = rou1 - rou2
start.degree = start.degree - d1*padding[2]
end.degree = end.degree + d1*padding[4]
start.degree = start.degree + d1*padding[2]
end.degree = end.degree - d1*padding[4]

rou1 = rou1 + d2*padding[3]
rou2 = rou2 - d2*padding[1]

Expand Down

0 comments on commit 10ca922

Please sign in to comment.