<!-- 
%\VignetteEngine{knitr::knitr}
%\VignetteIndexEntry{Plotting vignette}
-->

# Plotting glycans with glycanr package


First we need to load the package.

```{r}
# load glycanr package
library(glycanr)
```

Lets create a *data.frame* to simulate our glycan data.

```{r}
set.seed(123)
n <- 200
X <- data.frame(ID=1:n, GP1=runif(n), GP2=rexp(n, 0.3),
                GP3=rgamma(n, 2), cc=factor(sample(1:2, n, replace=TRUE)))
```

Now we have data.frame *X* where *GP* represents glycans,
*ID* represents e.g. sample IDs and *cc* represents Case/Control status.

```{r}
head(X)
```

This data can now be plotted with *glyco.plot* function.

Basic usage is given as follows.

```{r}
glyco.plot(X)
```

It plots boxplots for every column whose name starts with 'GP'. 
To change boxplots with *violin plots* (represents the density of a data)
option *violin* should be used.

```{r}
glyco.plot(X, violin=TRUE)
```

To separate boxplots (or violin plots) into different layers option
*collapse* should be used.

```{r}
glyco.plot(X, collapse=FALSE)
```

To plot log transformed data option *log.transform* should be used
```{r}
glyco.plot(X, collapse=FALSE, log.transform=TRUE)
```

### Grouping

If you want to see the difference between groups with boxplots (or violin plots)
option *group* should be used. It takes a character string representing the name
of the column on grouping should be done.

Grouping by *cc* variable can be done like this.

```{r}
glyco.plot(X, collapse=FALSE, log.transform=TRUE, group="cc")
```

As it can be seen the default option is to also conduct a test in difference
between groups (Mann-Whitney-Wilcoxon for 2 groups, Kruskal-Wallis for more groups)
and print the obtained p-values. The printed values are corrected for multiple testing
before printing. As the output you get original p-values and adjusted p-values
together with the plot.

Method for multiple testing correction can be adjusted by parameter *p.adjust.method*.

```{r}
glyco.plot(X, collapse=FALSE, log.transform=TRUE, group="cc", p.adjust.method="fdr")
```

Printing p-values in plots can be omitted with *print.p.values* parameter.
```{r}
glyco.plot(X, collapse=FALSE, log.transform=TRUE, group="cc", p.adjust.method="fdr",
           print.p.values=FALSE)
```

When grouping, by default, all glycans are plotted. To plot only those that
differ statistically significant parameter *all* should be used.

## Choosing other columns

Function *glyco.plot* plots all columns whose name starts with **GP**.
Since these plotting techniques can be used on other data as well
there is the parameter *glyco.names* to choose which columns you want to use.

```{r}
glyco.plot(X, collapse=FALSE, log.transform=TRUE, group="cc", p.adjust.method="fdr",
           print.p.values=FALSE, glyco.names=c("GP1", "GP2"))
```
