diff --git a/ggplotBreaks.R b/ggplotBreaks.R new file mode 100644 index 0000000000000000000000000000000000000000..bbac9fce99ee4171f982abc0a69b5f50f8e9806c --- /dev/null +++ b/ggplotBreaks.R @@ -0,0 +1,64 @@ +# #<----------------------------> +# # Please include this section when distributing and/or using this code. +# # Please read and abide by the terms of the included LICENSE +# # +# # Author : Deepankar Chakroborty (https://gitlab.utu.fi/deecha) +# # Report issues: https://gitlab.utu.fi/deecha/shared_scripts/-/issues +# # License: https://gitlab.utu.fi/deecha/shared_scripts/-/blob/master/LICENSE +# # +# # PURPOSE: +# # Returns a list of vectors containing breaks and labels +# # for a continuous variable mapped to one of the axes for use with ggplot2 +# # User enters: +# # - the range of the data +# # - the tick amount +# # - skip.steps (if any) = number of labels to skip +# # (i.e. show tick but no label) +# # e.g. +# # ggplotBreaks(c(0,150), tick =10, skip.steps = 1) # gives +# # $breaks +# # 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 +# # +# # $labels +# # "0" " " "20" " " "40" " " "60" " " "80" " " "100" " " +# # "120" " " "140" " " +# # +# #<----------------------------> + +ggplotBreaks <- function(range,tick,skip.steps=0){ + if (length(range) != 2){ + stop("Correct format for: range = c(min_value,max_value)") + } + if(skip.steps<0){ + stop(" 'skip.steps' should be >= 0") + } + breaks <- seq(from = range[1], + to = range[2], + by = tick) + if(skip.steps==0){ + labels <- as.character(breaks) + } else { + tmp <- c() + labels <- unlist( + lapply( + breaks[seq(from = 1, + to = length(breaks), + by = skip.steps+1)], + function(x) c(tmp, + c(x, + rep(" ",skip.steps)))), + use.names = F) + rm(tmp) + + } + if(length(labels) < length(breaks)){ + ## Add more spaces at the end to make lengths match + labels <- c( labels, rep(" " , (length(breaks) - length(labels)))) + } + if ( length(breaks) < length(labels)){ + ## Remove spaces from the end to make the lengths match + labels <- labels[1:length(breaks)] + } + return(list( breaks = breaks, + labels = labels)) +}