Mercurial > repos > guerler > charts
view histogram.r @ 9:656efffe650e draft
Uploaded
author | guerler |
---|---|
date | Fri, 18 Apr 2014 13:50:05 -0400 |
parents | a889861139bc |
children | 86068f6de925 |
line wrap: on
line source
# utilities roundUp <- function(x) 10^ceiling(log10(x)) roundDown <- function(x) 10^floor(log10(x)) # wrapper wrapper <- function(table, columns, options) { # initialize output list l <- list() # loop through all columns m <- list() for (key in names(columns)) { # load column data column <- as.numeric(columns[key]) column_data <- sapply( table[column], as.numeric ) # collect vectors in list m <- append(m, list(column_data)) } # get min/max boundaries max_value <- max(unlist(m)) min_value <- min(unlist(m)) # round number to base 10 min_value <- roundDown(min_value) max_value <- roundUp(max_value) # check if single bin is enough if (min_value == max_value) { l <- append(l, max_value) l <- append(l, 1.0) return (l) } # identify increment increment <- roundUp((max_value - min_value) / 10) # fix range and bins bin_seq = seq(min_value, max_value, by=increment) # add as first column l <- append(l, list(bin_seq[2: length(bin_seq)])) # loop through all columns for (key in seq(m)) { # load column data column_data <- m[[key]] # create hist data hist_data <- hist(column_data, breaks=bin_seq, plot=FALSE) # normalize densities count_sum <- sum(hist_data$counts) if (count_sum > 0) { hist_data$counts = hist_data$counts / count_sum } # collect vectors in list l <- append(l, list(hist_data$counts)) } # return return (l) }