Nothing
Some columns are not visible by default.
knitr::opts_chunk$set(echo = TRUE)
# multiple scatterplots, with confidence intervals, in a single html page #creating plot titles and axes labels f <- list(size = 18, color = "black") # family = "Verdana", title_p1 <- list(text = "Raw data", font = f, xref = "Phenotype", yref = "Annotation term frequency", yanchor = "bottom", xanchor = "center", align = "center", x = 0.5, y = 1, showarrow = FALSE) title_p2 <- title_p1 title_p2$text <- "Rank data" title_p2$xref <- "Phenotype rank" title_p2$yref <- "Annotation term frequency rank" title_p3 <- title_p1 title_p3$text <- "Phylogeny-aware linear model data" title_p3$xref <- "Contrasts of phenotypes" title_p3$yref <- "Contrasts of annotation term frequencies" # TODO: multicore-parallelize this for loop. for (i in seq_along(df_cutoff$name)){#df_cutoff$name[1:length(df_cutoff[, 1])]) { # get filtered to plot a lot fname <- df_cutoff$name[i] #output dir file <- paste0(cpd, gsub(":", "_", fname, fixed = TRUE), ".html") # setting up data Xdf <- defs$x names(Xdf) <- "X_var" Xdf$feature <- defs$y[, fname] / defs$denominator ID <- row.names(Xdf) group <-defs$groups p1 <- ggplot2::ggplot(data = Xdf, mapping = ggplot2::aes(x = X_var, y = feature, label = ID )) + ggplot2::geom_point() + # expand_limits(x = 0, y = 0) + ggplot2::geom_smooth(method = "lm", formula = y ~ x, se = TRUE) + ggplot2::theme_bw() + ggplot2::labs(x = "Phenotype value", y = "Annotation frequency") Xdf <- as.data.frame(rank(defs$x[, 1])) rownames(Xdf) <- rownames(defs$x) names(Xdf) <- "X_var" Xdf$feature <- rank(defs$y[, fname] / defs$denominator) p2 <- ggplot2::ggplot(data = Xdf, mapping = ggplot2::aes(x = X_var, y = feature, label = ID)) + ggplot2::geom_point() + ggplot2::geom_smooth(method = "loess", formula = y ~ x, se = TRUE) + ggplot2::theme_bw() + ggplot2::labs(x = "Phenotype rank", y = "Annotation frequency (rank)") # TODO: plots only consider "pic". If we implement "gls", maybe we'll need to # change something here too. tmp_x <- defs$x[, 1] names(tmp_x) <- rownames(defs$x) contrast_x <- ape::pic(x = tmp_x, phy = defs$tree) tmp_y <- defs$y[, fname] / defs$denominator names(tmp_y) <- rownames(defs$x) contrast_y <- ape::pic(x = tmp_y, phy = defs$tree) Xdf <- data.frame(contrast_x, contrast_y) model <- stats::lm(contrast_y ~ contrast_x + 0) p3 <- ggplot2::ggplot(data = Xdf, mapping = ggplot2::aes(x = contrast_x, y = contrast_y, label = rownames(Xdf))) + ggplot2::geom_point() + ggplot2::geom_abline(slope = model$coefficients[1], intercept = 0, color = c("#3366FFFF"), size = 1) + ggplot2::theme_bw() + ggplot2::labs(x = "contrasts for phenotype", y = "Contrasts for annotation frequency") # ggplot2::geom_smooth(method = "lm", se = FALSE) + # ggplot2::geom_line(data = fortify(model), aes(x = contrast_x, y = .fitted)) # ggtitle(paste0("phylogeny-aware linear model data for "), i), # ggtitle("Representation of raw data Representation of rank data Representation of phylogenetic-aware linear model data") p4 <- plotly::subplot(p1, p2, p3, shareX = TRUE, shareY = FALSE, titleY = TRUE) p1ly <- plotly::ggplotly(p4, tooltip = c('label','X_var','Normalized feature')) htmlwidgets::saveWidget(p1ly, file = file, libdir = 'lib', selfcontained = FALSE) }
for (i in seq_along(df_cutoff$name)){ fname <- df_cutoff$name[i] #output dir file <- paste0(cpd, gsub(":", "_", fname, fixed = TRUE), '_boxplot.html') # file_name <- paste0(fname, "_boxplot_per_group.pdf") # file_name <- gsub(":", "_", file_name) tmp <- data.frame(defs$x, defs$short.name, defs$groups, defs$y[fname], (defs$y[fname]/defs$denominator)) colnames(tmp) <- c("cell_type", "short", "group", "count", "norm") my_pallete <- data.frame(group = unique(tmp$group), colour = I(CALANGO_brewer_pal(length(unique(tmp$group)), name = 'Set1'))) tmp$fill <- my_pallete$colour[match(tmp$group, my_pallete$group)] tmp$group <- stats::reorder(tmp$group, tmp$count, FUN = median) p1 <- ggplot2::ggplot(tmp, ggplot2::aes(x = group,y = count)) + ggplot2::geom_violin(ggplot2::aes(fill = I(fill)), scale = "width", alpha = 0.25) + ggplot2::geom_boxplot(ggplot2::aes(fill = I(fill)), alpha = 0.3) + ggplot2::geom_jitter(width = 0.05, height = 0, size = .5) + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, hjust = 1), axis.title.x = ggplot2::element_blank()) tmp$group <- stats::reorder(tmp$group, tmp$norm, FUN = median) p2 <- p1 %+% tmp + ggplot2::aes(y = norm) + ggplot2::annotate("text", y = 1.02 * max(tmp$norm), x = 1, label = "Norm") p1 <- p1 + ggplot2::annotate("text", y = 1.02 * max(tmp$count), x = 1, label = "Count") + ggplot2::ggtitle(paste0(fname, " - ", defs$annotation.cor[fname])) prow <- plotly::subplot(plotly::style(p1, showlegend = FALSE, width = .1), plotly::style(p2, showlegend = FALSE, width = .1), shareY = FALSE, titleY = FALSE) p3 <- plotly::ggplotly(prow, tooltip = c("x", "y")) htmlwidgets::saveWidget(p3, file = file, libdir = 'lib', selfcontained = FALSE ) }
# CHECK HERE - NAMES, INDICES, URL ETC. dtable <- df_cutoff #build links to scatterplots dtable$corr_plots <- paste0('<a target=_blank href="', paste0('correlation_Plots/', gsub(":", "_", df_cutoff$name, fixed = TRUE), '.html'), '">', df_cutoff$name,'</a>') #build links to boxplots dtable$boxplots <- paste0('<a target=_blank href="', paste0('correlation_Plots/', gsub(":", "_", df_cutoff$name, fixed = TRUE), '_boxplot.html'), '">', df_cutoff$name,'</a>') dtable <- DT::datatable(dtable, escape = FALSE, filter = 'bottom', extensions = 'Buttons', options = list(dom = 'Bfrtip', buttons = c('colvis','csv'), columnDefs = list(list(visible = FALSE, targets = 4:(length(df_cutoff) - 2))))) # prepare table dtable
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.