---
title: "dumbbell R Package"
author: "Foo Cheung"
date: "`r Sys.Date()`"
output:
  html_document:
    toc: true
    theme: united
vignette: >
  %\VignetteIndexEntry{dumbbell}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---


```{r, echo=FALSE}
library(knitr)
opts_chunk$set(tidy.opts=list(width.cutoff=60),tidy=TRUE)
```



## Example 1. Creating a basic dumbell plot

```{r ,fig.width=7,fig.height=3  ,cache=FALSE, message = FALSE, warning = FALSE}

## Load libraries
suppressPackageStartupMessages({
library(tidyverse)
library(ggplot2) 
library(rlang)
library(utils)
library(data.table)
library(dumbbell)

     
})



## Generate Some Random Data

z<-data.frame(Group = c(rep("A",10),rep("B",10)),
              Subject = c(paste("sub_",1:10,sep=""),paste("sub_",1:10,sep="")),
              result = c(sample(1:100000, 20, replace=T)),
              analysis = c(rep("a",5),rep("b",5) ,rep("a",5),rep("b",5) )
              
)

## Create 2 groups "A", "B"

b<-z %>% filter(Group == "A")
c<-z %>% filter(Group == "B")

b$Subject<-as.factor(b$Subject)
c$Subject<-as.factor(c$Subject)

d<-merge(b,c, by.x=c("Subject", "analysis"), by.y = c("Subject","analysis"))


## Order by delta
e<-d %>% mutate("diff"=pmin(result.x-result.y)) %>% arrange(diff)
d$Subject<-factor(d$Subject,  e$Subject)


##Create a basic dumbell Plot
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",
         lab1 = "labelA",lab2 = "labelB") 


```


\newpage
## Example 2. Adding a delta column 

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}

##Adding a delta column 
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",
         lab1 = "labelA",lab2 = "labelB",delt=1,expandx = 0.1) 
```


\newpage


## Example 3. Adding values as labels

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}

##Adding values as labels
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",
         lab1 = "labelA",lab2 = "labelB", pt_val = 1, expandx = 0.05, col_lab1 = "blue", col_lab2 = "red") 
```

\newpage

## Example 4. Adding arrows

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}


##Adding arrows
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",
         lab1 = "labelA",lab2 = "labelB", expandx = 0.01, arrow = 1, pt_alpha = 0.6, arrow_size = 0.2, 
          segsize = 0.7, pointsize = 1.5, col_seg1 = "#A9A9A9", col_seg2 = "#A9A9A9")
```


\newpage
## Example 4. Adding facets

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}


##Adding facets
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",lab1 = "labelA",lab2 = "labelB")  + 
   facet_wrap(analysis ~., ncol=1,scales = "free") 
```






\newpage
## Example 5. Adding facets and pvalues (Wilcox.test paired)

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}


##Adding facets
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",lab1 = "labelA",lab2 = "labelB", pval=1)  + 
   facet_wrap(analysis ~., ncol=1,scales = "free") 
```







\newpage
## Example 6. Mixing it up

```{r ,fig.width=7,fig.height=4  ,cache=FALSE,message = FALSE, warning = FALSE}


##Adding facets, highlight one direction, add arrows and the delta value
dumbbell(xdf=d,id = "Subject",key="analysis",column1 = "result.x",column2 = "result.y",lab1 = "labelA",lab2 = "labelB",
   delt = 1,col_seg2 = "red", col_seg1 = "blue",arrow = 1 ,pt_alpha = 0.6, pointsize = 2 ,expandx = 0.2  ,segsize = 0.5,textsize = 2,pval=1
 ) + 
   facet_wrap(analysis ~., ncol=1,scales = "free") 
```















