Mercurial > repos > bcclaywell > argo_navis
comparison bin/plot_pact_tree.R @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
| author | bcclaywell |
|---|---|
| date | Mon, 12 Oct 2015 17:43:33 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d67268158946 |
|---|---|
| 1 #!/usr/bin/env Rscript | |
| 2 | |
| 3 library(ggplot2) | |
| 4 library(argparse) | |
| 5 | |
| 6 parser <- ArgumentParser() | |
| 7 parser$add_argument('-b', '--brewer', help="Specify a color brewer pallete") | |
| 8 parser$add_argument('-c', '--color-spec', help="Specify a deme -> color CSV mapping") | |
| 9 parser$add_argument('-d', '--demes', help="For help with making colors consistent, always know what all the demes are") | |
| 10 parser$add_argument('common') | |
| 11 parser$add_argument('input') | |
| 12 parser$add_argument('output') | |
| 13 args <- parser$parse_args() | |
| 14 | |
| 15 # Load shared library | |
| 16 source(args$common) | |
| 17 | |
| 18 data <- read.csv(args$input, stringsAsFactors=F) | |
| 19 | |
| 20 # Factorify the demes and assign colors | |
| 21 deme.factor <- factorify.deme(data, args=args) | |
| 22 data <- deme.factor$data | |
| 23 deme.colors <- deme.factor$colors | |
| 24 | |
| 25 # We will be doing a separate geom data setting for the tip coloring and such | |
| 26 tips.data <- subset(data, klass == "tip") | |
| 27 | |
| 28 # Computing some values for getting spacing/padding right for tips | |
| 29 x.range <- abs(min(data$x) - max(data$x)) | |
| 30 x.end <- max(data$x) + (x.range * 0.13) | |
| 31 print(c(min(data$x), max(data$x), x.range, x.end)) | |
| 32 | |
| 33 # Move the tips names over just a touch from the dots | |
| 34 label.nudge <- x.range * 0.01 | |
| 35 | |
| 36 | |
| 37 # Go to town plotting | |
| 38 gg <- ggplot(data, aes(x=x, y=y, color=label, fill=label)) | |
| 39 gg <- gg + geom_segment(aes(xend=parent_x, yend=parent_y)) | |
| 40 gg <- gg + scale_color_manual(values=deme.colors) | |
| 41 gg <- gg + geom_text(aes(x=x+label.nudge, y=y, label=sequence, hjust=0), color="black", size=1.8) | |
| 42 gg <- gg + geom_point(aes(color=label), data=tips.data) | |
| 43 gg <- gg + theme_bw() | |
| 44 # Add some padding for the label names on right | |
| 45 gg <- gg + xlim(min(data$x), x.end) | |
| 46 gg <- gg + theme(axis.text.y=element_blank(), | |
| 47 axis.ticks.y=element_blank(), | |
| 48 axis.title.y=element_blank(), | |
| 49 legend.position="none") | |
| 50 gg <- gg + xlab("time (units same as tip dates)") | |
| 51 gg <- gg + labs(title="Maximum likelihood ancestral reconstruction") | |
| 52 | |
| 53 # Dynamically compute dimensions | |
| 54 n <- dim(tips.data)[1] | |
| 55 print(n) | |
| 56 height <- 9*(n/292) + 3 | |
| 57 | |
| 58 ggsave(args$output, gg, width=7, height=height) | |
| 59 |
