3131# ' @importFrom stats as.formula
3232# ' @importFrom ggh4x facet_wrap2 strip_themed elem_list_rect
3333# ' @importFrom dplyr group_by summarise
34- # ' @importFrom dplyr %>%
34+ # ' @importFrom dplyr %>% filter
3535# ' @importFrom ggrepel geom_text_repel
3636# ' @importFrom utils tail
3737# '
@@ -119,16 +119,16 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
119119 if (length(color ) < length(unique(data [, group.key ]))) {
120120 warning(" Fewer colors provided than there are groups in " , group.key , " variable, falling back to default colors" )
121121 # sample group with same color
122- fill.color <- AutoColor(data = data , n = 9 , name = " Set1" , key = group.key )
122+ fill.color <- AutoColor(data = data [[ group.key ]], pal = " Set1" )
123123 } else {
124124 fill.color <- color
125125 }
126126 if (is.null(names(fill.color ))) {
127127 names(fill.color ) <- unique(data [, group.key ])
128128 }
129- sacle_fill_cols <- scale_fill_manual(values = fill.color )
129+ scale_fill_cols <- scale_fill_manual(values = fill.color )
130130 } else {
131- sacle_fill_cols <- NULL
131+ scale_fill_cols <- NULL
132132 }
133133 if (! single.nuc ) {
134134 mapping <- aes_string(xmin = " start" , xmax = " end" , ymin = " 0" , ymax = " score" , fill = group.key )
@@ -140,7 +140,7 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
140140 if (length(color ) != length(unique(data [, group.key ]))) {
141141 warning(" The color you provided is not as long as " , group.key , " column in data, select automatically!" )
142142 # sample group with same color
143- tmp.color <- AutoColor(data = data , n = 9 , name = " Set1" , key = group.key )
143+ tmp.color <- AutoColor(data = data [[ group.key ]], pal = " Set1" )
144144 # change group key color
145145 color.color.df <- merge(unique(data [c(group.key )]), data.frame (color = tmp.color ), by.x = group.key , by.y = 0 )
146146 color.color <- color.color.df $ color
@@ -169,7 +169,7 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
169169 fill.str.len <- length(unique(data [, fill.str ]))
170170 if (is.null(color ) | length(color ) != fill.str.len ) {
171171 # sample group with same color
172- tmp.color <- AutoColor(data = data , n = 9 , name = " Set1" , key = group.key )
172+ tmp.color <- AutoColor(data = data [[ group.key ]], pal = " Set1" )
173173 # change color
174174 fill.color.df <- merge(unique(data [c(fill.str , group.key )]), data.frame (color = tmp.color ), by.x = group.key , by.y = 0 )
175175 fill.color <- fill.color.df $ color
@@ -180,9 +180,9 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
180180 names(fill.color ) <- unique(data [, fill.str ])
181181 }
182182 }
183- sacle_fill_cols <- scale_fill_manual(values = fill.color )
183+ scale_fill_cols <- scale_fill_manual(values = fill.color )
184184 } else {
185- sacle_fill_cols <- NULL
185+ scale_fill_cols <- NULL
186186 }
187187 } else if (plot.type == " joint" ) {
188188 message(" For joint visualization, the mapping should contains start, score, color." )
@@ -191,7 +191,7 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
191191 color.str.len <- length(unique(data [, color.str ]))
192192 if (is.null(color ) | length(color ) != color.str.len ) {
193193 # sample group with same color
194- tmp.color <- AutoColor(data = data , n = 9 , name = " Set1" , key = group.key )
194+ tmp.color <- AutoColor(data = data [[ group.key ]], pal = " Set1" )
195195 # change color
196196 if (color.str == group.key ) {
197197 color.color.df <- merge(unique(data [c(color.str )]), data.frame (color = tmp.color ), by.x = group.key , by.y = 0 )
@@ -223,7 +223,7 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
223223
224224 # facet color
225225 if (is.null(facet.color )) {
226- facet.color <- AutoColor(data = data , n = 12 , name = " Set3" , key = facet.key )
226+ facet.color <- AutoColor(data = data [[ facet.key ]], pal = " Set3" )
227227 }
228228
229229 # facet formula
@@ -255,8 +255,8 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
255255 plot.ele <- list (region.rect , region.facet )
256256
257257 # color the track
258- if (! is.null(sacle_fill_cols )) {
259- plot.ele <- append(plot.ele , sacle_fill_cols )
258+ if (! is.null(scale_fill_cols )) {
259+ plot.ele <- append(plot.ele , scale_fill_cols )
260260 }
261261
262262 if (range.position == " in" ) {
@@ -336,36 +336,29 @@ geom_coverage <- function(data, mapping = NULL, color = NULL, rect.color = NA,
336336 # add rect
337337 if (! is.null(mark.region )) {
338338 # get valid mark region
339- region.start <- data [1 , " start" ]
340- region.end <- data [nrow(data ), " end" ]
341- valid.region.list <- list ()
342- for (r in 1 : nrow(mark.region )) {
343- if (mark.region [r , " start" ] < = region.end & mark.region [r , " end" ] > = region.start ) {
344- if (mark.region [r , " end" ] > = region.end ) {
345- mark.region [r , " end" ] <- region.end
346- }
347- if (mark.region [r , " start" ] < = region.start ) {
348- mark.region [r , " start" ] <- region.start
349- }
350- valid.region.list [[r ]] <- mark.region [r , ]
351- }
352- }
353- valid.region.df <- do.call(rbind , valid.region.list ) %> % as.data.frame()
354- colnames(valid.region.df ) <- colnames(mark.region )
355-
339+ region.start <- min(data $ start )
340+ region.end <- max(data $ end )
341+ mark.region <- dplyr :: filter(
342+ mark.region ,
343+ .data [[" start" ]] > = region.start ,
344+ .data [[" end" ]] < = region.end
345+ )
356346 region.mark <- geom_rect(
357- data = valid .region.df ,
347+ data = mark .region ,
358348 aes_string(xmin = " start" , xmax = " end" , ymin = " -Inf" , ymax = " Inf" ),
359349 fill = mark.color , alpha = mark.alpha
360350 )
361351 plot.ele <- append(plot.ele , region.mark )
362352 # add rect label
363353 if (show.mark.label ) {
364- if (" label" %in% colnames(valid .region.df )) {
354+ if (" label" %in% colnames(mark .region )) {
365355 # create mark region label
366- region.label <- valid .region.df
356+ region.label <- mark .region
367357 if (plot.type == " facet" ) {
368- region.label [, facet.key ] <- facet.order [1 ]
358+ region.label [, facet.key ] <- factor (
359+ rep(facet.order [1 ], nrow(mark.region )),
360+ facet.order
361+ )
369362 }
370363 region.mark.label <- geom_text_repel(
371364 data = region.label ,
0 commit comments