Mercurial > repos > iuc > ggplot2_point
changeset 0:1bff6682e780 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ggplot2 commit 6e466ce83e2e5c0dd0ba30356d0488cf74574b8f
author | iuc |
---|---|
date | Tue, 22 Aug 2017 06:42:21 -0400 |
parents | |
children | a78aa83f6625 |
files | ggplot_point.xml macros.xml test-data/ggplot_heatmap2_result1.pdf test-data/ggplot_histogram_result1.pdf test-data/ggplot_point_result1.pdf test-data/ggplot_violin_result1.pdf test-data/mtcars.txt |
diffstat | 7 files changed, 431 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ggplot_point.xml Tue Aug 22 06:42:21 2017 -0400 @@ -0,0 +1,232 @@ +<tool id="ggplot2_point" name="Scatterplot w ggplot2" version="@VERSION@"> + <macros> + <import>macros.xml</import> + </macros> + <expand macro="requirements"></expand> + <command detect_errors="exit_code"><![CDATA[ +cat '$script' && +Rscript '$script' && +mv output_plot.pdf $output1 + ]]></command> + <configfiles> + <configfile name="script"><![CDATA[ + +@R_INIT@ + +## Import library +library("ggplot2") + +@XY_SCALING@ + +## Choose theme for plot +#if $theme == "bw" + gg_theme = theme_bw() +#else + gg_theme = NULL +#end if + +gg_width = $with_output_dim +gg_height = $height_output_dim + +input <- read.csv('$input1', sep='\t', header=TRUE) + +## renaming columns so ggplot can use them +names(input)[$xplot] <- "xcol" +names(input)[$yplot] <- "ycol" + +## choosing whether to plot data as multiple groups on one plot(factoring) OR multiple groups on different plots +#if $factor.factoring == "Multiple" + gg_facet = facet_wrap( ~ factor) + gg_factor = NULL + color_scale = NULL + #if $points.pointoptions == "Default" + gg_point = geom_point(size=1, alpha=1, gg_factor) + #else + gg_point = geom_point(size='$points.size', alpha='$points.alpha', colour='$points.pointcolor') + #end if + + names(input)[$factor.factorcol] <- "factor" + +#elif $factor.factoring == "Single" + gg_facet = NULL + gg_factor = aes(colour=factor(factor)) + + #if $points.pointoptions == "default" + gg_point = geom_point(size=1, alpha=1, gg_factor) + #else + gg_point = geom_point(size=$points.size, alpha='$points.alpha', gg_factor) + #end if + + #if $colors == "Default" + color_scale = scale_colour_hue(direction='$factor.colororder') + #else + color_scale = scale_color_brewer(palette='$colors', direction='$factor.colororder') + #end if + + names(input)[$factor.factorcol] <- "factor" +#else + gg_facet = NULL + gg_factor = NULL + color_scale = NULL + + #if $points.pointoptions == "default" + gg_point = geom_point(size=1, alpha=1, gg_factor) + #else + gg_point = geom_point(size=$points.size, alpha='$points.alpha', colour='$points.pointcolor') + #end if +#end if + +@TRANSFORM@ + +##axis label custization +#if $axis_title_customization.axis_customization == "default" + gg_axistitle = theme(axis.title = element_text(color = NULL, size = NULL, face = NULL)) +#else + gg_axistitle = theme(axis.title = element_text(color = '$color', size = '$size', face = '$face')) +#end if + + +##axis text(tick) custization +#if $axis_text_customization.axis_customization == "default" + gg_axistext = theme(axis.text = element_text(color = NULL, size = NULL, face = NULL)) +#else + gg_axistext = theme(axis.text = element_text(color = '$color', size = '$size', face = '$face')) +#end if + +##plot title custimization +#if $plot_title_customization.axis_customization == "default" + gg_plottitle = theme(plot.title = element_text(color = NULL, size = NULL, face = NULL)) +#else + gg_plottitle = theme(plot.title = element_text(color='$color', size='$size', face='$face')) +#end if + + + +## grid line customization +#if $gridlinecust == "default" + gg_gridline = NULL +#elif $gridlinecust == "hidemajor" + gg_gridline = theme(panel.grid.major = element_blank()) +#elif $gridlinecust == "hideminor" + gg_gridline = theme(panel.grid.minor = element_blank()) +#elif $gridlinecust == "hideboth" + gg_gridline = theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank()) +#end if + +#this is the actual ggplot command to make the final plot(s) +ggplot(input, aes(xcol,ycol)) + gg_point + gg_facet+ +gg_theme + gg_scalex + gg_scaley + color_scale + ggtitle('$title') + xlab('$xlab') + ylab('$ylab')+ +gg_axistitle + gg_axistext + gg_plottitle + gg_gridline + +ggsave(file='output_plot.pdf', width=gg_width, height=gg_height) +dev.off() + ]]></configfile> + </configfiles> + <inputs> + <param name="input1" type="data" format="tabular" label="Input in tabular format" /> + <param name="xplot" type="integer" value="8" label="Column to plot on x-axis" /> + <param name="yplot" type="integer" value="9" label="Column to plot on y-axis" /> + + <expand macro="title" /> + <expand macro="xy_lab" /> + + <conditional name="points"> + <param name="pointoptions" type="select" label="Advanced - data point options"> + <option value="default" selected="True">Default</option> + <option value="defined">User defined point options</option> + </param> + <when value="default"> + <!--Do nothing here --> + </when> + <when value="defined"> + <param name="size" type="float" value="1" label="relative size of points" /> + <param name="alpha" type="float" value="1" label="Transparency of points (On a scale of 0-1; 0=transparent, 1=default)" /> + <param name="pointcolor" type="select" label="Color of data points" > + <option value="black">Black (default)</option> + <option value="red">Red</option> + <option value="white">White</option> + <option value="blue">Blue</option> + <option value="orange">Orange</option> + <option value="yellow">Yellow</option> + <option value="green">Green</option> + <option value="purple">Purple</option> + <option value="magenta">Magenta</option> + <option value="cyan">Cyan</option> + <option value="grey">Grey</option> + <option value="gold">Gold</option> + </param> + </when> + </conditional> + <conditional name="factor"> + <param name="factoring" type="select" label="Advanced - plotting multiple groups" > + <option value="Default" selected="True">No thanks - just plot the data as one group</option> + <option value="Single">Plot multiple groups of data on one plot</option> + <option value="Multiple">Plot multiple groups of data on individual plots</option> + </param> + <when value="Default"> + <!--Do nothing here --> + </when> + <when value="Single"> + <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" /> + <expand macro="colors" /> + <param name="colororder" type="select" label="Reverse color scheme" > + <option value="1">Default order of color scheme</option> + <option value="-1">Reverse the order of my color scheme</option> + </param> + </when> + <when value="Multiple"> + <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" /> + </when> + </conditional> + <expand macro="transform" /> + + <expand macro="xy_scaling" /> + + <param name="theme" type="select" label="Advanced - backgound theme for plot"> + <option value="bw">Black and white</option> + <option value="Default">Default (grey)</option> + </param> + + <conditional name="axis_title_customization"> + <expand macro="axis_customization" label="Advanced - axis title options" /> + </conditional> + <conditional name="axis_text_customization"> + <expand macro="axis_customization" label="Advanced - axis text options" /> + </conditional> + <conditional name="plot_title_customization"> + <expand macro="axis_customization" label="Advanced - Plot title options" /> + </conditional> + <param name="gridlinecust" type="select" label="Advanced - grid lines"> + <option value="default">Default grid lines</option> + <option value="hidemajor">Hide major grid lines</option> + <option value="hideminor">Hide minor grid lines</option> + <option value="hideboth">Hide major and minor grid lines</option> + </param> + <expand macro="dimensions" /> + </inputs> + <outputs> + <!-- <data name="output1" format="png" from_work_dir="Rplot.png"/> + ToDo: It would be nice to have different output formats for all tools + --> + <data name="output1" format="pdf" from_work_dir="Rplot.pdf"/> + </outputs> + <tests> + <test> + <param name="input1" value="mtcars.txt" ftype="tabular" /> + <output name="output1" file="ggplot_point_result1.pdf" compare="sim_size" /> + </test> + </tests> + <help><![CDATA[ + This tool will generate a scatterplot representing data from two groups/conditions. + + The input data should be in tabular format and the user can determine which groups (columns) to plot. + + Multiple groups can be plotted on the same or multiple plots by providing a column with a group identifier under "Advanced - plotting multiple groups". + + Feel free to explore the (many) advanced options to customize your plot. Galaxy makes this type optimization easy for the user! + + The ouput is a pdf file with your scatterplot. The dimensions of this file can be modified under "Advanced - output dimensions" + + ]]></help> + <expand macro="citations"/> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Tue Aug 22 06:42:21 2017 -0400 @@ -0,0 +1,166 @@ +<?xml version="1.0"?> +<macros> + <xml name="requirements"> + <requirements> + <requirement type="package" version="@VERSION@">r-ggplot2</requirement> + <yield /> + </requirements> + </xml> + <token name="@VERSION@">2.2.1</token> + + <token name="@R_INIT@"><![CDATA[ +## Setup R error handling to go to stderr +options(show.error.messages=F, error=function(){cat(geterrmessage(), file=stderr()); q("no",1,F)}) + +## Unify locale settings +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") + ]]></token> + + <token name="@TRANSFORM@"><![CDATA[ +#if $transform == "log2" + input["value"] <- log2(input["value"]) +#elif $transform == "log2plus1" + input["value"] <- log2(input["value"]+1) +#elif $transform == "log10" + input["value"] <- log10(input["value"]) +#elif $transform == "log10plus1" + input["value"] <- log10(input["value"]+1) +#end if + ]]></token> + + <xml name="transform"> + <param name="transform" type="select" label="Advanced - log transformation"> + <option value="none">Plot the data as it is</option> + <option value="log2">Log2(value) transform my data</option> + <option value="log2plus1">Log2(value+1) transform my data</option> + <option value="log10">Log10(value) transform my data</option> + <option value="log10plus1">Log10(value+1) transform my data</option> + </param> + </xml> + + <token name="@XY_SCALING@"><![CDATA[ +#Choose between automatically scaled x and y axis or user defined +#if $scaling.plot_scaling == "Automatic" + gg_scalex = NULL + gg_scaley = NULL +#else + gg_scalex = xlim($scaling.xaxismin, $scaling.xaxismax) + gg_scaley = ylim($scaling.yaxismin, $scaling.yaxismax) +#end if + ]]></token> + + <xml name="xy_scaling"> + <conditional name="scaling"> + <param name="plot_scaling" type="select" label="Advanced - Axis scaling"> + <option value="Automatic" selected="True">Automatic axis scaling</option> + <option value="Defined">User deined axis scales</option> + </param> + <when value="Automatic"> + <!--Do nothing here --> + </when> + <when value="Defined"> + <param name="xaxismin" type="integer" value="0" label="minimal range of x-axis" /> + <param name="xaxismax" type="integer" value="3" label="maximal range of x-axis" /> + <param name="yaxismin" type="integer" value="0" label="minimal range of y-axis" /> + <param name="yaxismax" type="integer" value="3" label="maximal range of y-axis" /> + </when> + </conditional> + </xml> + <xml name="title"> + <param name="title" type="text" value="plot title" label="Title of plot" /> + </xml> + <xml name="xy_lab"> + <param name="xlab" type="text" value="title of x-axis" label="Label for x-axis"/> + <param name="ylab" type="text" value="title of y-axis" label="Label for y-axis"/> + </xml> + <xml name="dimensions"> + <param name="with_output_dim" type="float" value="7" label="width of output" help="in inches" /> + <param name="height_output_dim" type="float" value="7" label="height of output" help="in inches" /> + </xml> + <xml name="citations"> + <citations> + <citation type="bibtex">@Book{ + author = {Hadley Wickham}, + title = {ggplot2: Elegant Graphics for Data Analysis}, + publisher = {Springer-Verlag New York}, + year = {2009}, + isbn = {978-0-387-98140-6}, + url = {http://ggplot2.org} + } + </citation> + </citations> + </xml> + + <xml name="axis_customization" token_label="Advanced - axis title options"> + <param name="axis_customization" type="select" label="@LABEL@"> + <option value="default" selected="True">Default</option> + <option value="defined">User defined label options</option> + </param> + <when value="default"> + <!--Do nothing here --> + </when> + <when value="defined"> + <param name="size" type="float" value="12" label="Axis label size (default = 12)"/> + <param name="color" type="select" label="Color of axis label"> + <option value="black">Black (default)</option> + <option value="red">Red</option> + <option value="white">White</option> + <option value="blue">Blue</option> + <option value="orange">Orange</option> + <option value="yellow">Yellow</option> + <option value="green">Green</option> + <option value="purple">Purple</option> + <option value="magenta">Magenta</option> + <option value="cyan">Cyan</option> + <option value="grey">Grey</option> + <option value="gold">Gold</option> + </param> + <param name="face" type="select" label="Font effect of axis label"> + <option value="plain">Normal (default)</option> + <option value="bold">Bold</option> + <option value="italic">Italic</option> + </param> + </when> + </xml> + + <xml name="colors"> + <param name="colors" type="select" label="Color schemes to differentiate your groups" > + <option value="Default">Default color scheme</option> + <option value="YlOrRd">Yellow to orange to red (discrete, max=9 colors)</option> + <option value="YlOrBr">Yellow to orange to brown (discrete, max=9 colors)</option> + <option value="YlGnBu">Yellow to green to blue (discrete, max=9 colors)</option> + <option value="YlGn">Yellow to green (discrete, max=9 colors)</option> + <option value="Reds">Shades of red from light to dark (discrete, max=9 colors)</option> + <option value="RdPu">Red to purple (discrete, max=9 colors)</option> + <option value="Purples">Shades of purple from light to dark (discrete, max=9 colors)</option> + <option value="PuRd">Purple to red (discrete, max=9 colors)</option> + <option value="PuBuGn">Purple to blue to green (discrete, max=9 colors)</option> + <option value="PuBu">Purple to blue(discrete, max=9 colors)</option> + <option value="OrRd">Orange to red (discrete, max=9 colors)</option> + <option value="Oranges">Shades of orange from light to dark (discrete, max=9 colors)</option> + <option value="Greys">Shades of grey from light to dark (discrete, max=9 colors)</option> + <option value="Greens">Shades of greens from light to dark (discrete, max=9 colors)</option> + <option value="GnBu">Green to blue (discrete, max=9 colors)</option> + <option value="BuPu">Blue to purple (discrete, max=9 colors)</option> + <option value="BuGn">Blue to green (discrete, max=9 colors)</option> + <option value="Blues">Shades of blue from light to dark (discrete, max=9 colors)</option> + <option value="Set1">Set 1 - predefined color pallete (discrete, max=9 colors)</option> + <option value="Set2">Set 2 - predefined color pallete (discrete, max=8 colors)</option> + <option value="Set3">Set 3 - predefined color pallete (discrete, max=12 colors)</option> + <option value="Pastel1">Pastel 1 - predefined pastel color pallete (discrete, max=9 colors)</option> + <option value="Pastel2">Pastel 2 - predefined pastel color pallete (discrete, max=8 colors)</option> + <option value="Paired">Paired - predefined color pallete (discrete, max=12 colors)</option> + <option value="Dark2">Dark 2 - predefined color pallete (discrete, max=12 colors)</option> + <option value="Accent">Accent - predefined color pallete (discrete, max=12 colors)</option> + <option value="Spectral">Spectral - Red to yellow to purple (discrete, max=11 colors)</option> + <option value="RdYlGn">Red to yellow to green (discrete, max=11 colors)</option> + <option value="RdYlBu">Red to yellow to blue (discrete, max=11 colors)</option> + <option value="RdGy">Red to grey (discrete, max=11 colors)</option> + <option value="RdBu">Red to blue (discrete, max=11 colors)</option> + <option value="PuOr">Purple to orange (discrete, max=11 colors)</option> + <option value="PRGn">Purple to green (discrete, max=11 colors)</option> + <option value="BrBG">Brown to teal (discrete, max=11 colors)</option> + </param> + </xml> + +</macros>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/mtcars.txt Tue Aug 22 06:42:21 2017 -0400 @@ -0,0 +1,33 @@ +brand mpg cyl disp hp drat wt qsec vs am gear carb +Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4 +Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 +Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1 +Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 +Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2 +Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1 +Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4 +Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2 +Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2 +Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4 +Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4 +Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.4 0 0 3 3 +Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.6 0 0 3 3 +Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18 0 0 3 3 +Cadillac Fleetwood 10.4 8 472 205 2.93 5.25 17.98 0 0 3 4 +Lincoln Continental 10.4 8 460 215 3 5.424 17.82 0 0 3 4 +Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4 +Fiat 128 32.4 4 78.7 66 4.08 2.2 19.47 1 1 4 1 +Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 +Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1 +Toyota Corona 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1 +Dodge Challenger 15.5 8 318 150 2.76 3.52 16.87 0 0 3 2 +AMC Javelin 15.2 8 304 150 3.15 3.435 17.3 0 0 3 2 +Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4 +Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2 +Fiat X1-9 27.3 4 79 66 4.08 1.935 18.9 1 1 4 1 +Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2 +Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2 +Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4 +Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6 +Maserati Bora 15 8 301 335 3.54 3.57 14.6 0 1 5 8 +Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2