diff --git a/README.md b/README.md index 1fec85a..90569df 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,7 @@ mtcars_heatmap <- mtcars_heatmap ``` -![](man/fragments/figures/unnamed-chunk-7-1.png) +![](man/fragments/figures/heatmap-1.png) ## Saving @@ -169,6 +169,29 @@ mtcars_heatmap mtcars_heatmap |> save_pdf("mtcars_heatmap.pdf") ``` +## Clustering + +Choose alternative clustering distance and methods. + +``` r +tidyHeatmap::pasilla |> + + heatmap( + .column = sample, + .row = symbol, + .value = `count normalised adjusted`, + scale = "row", + + # Arguments passed to ComplexHeatmap + clustering_distance_rows = "manhattan", + clustering_distance_columns = "manhattan", + clustering_method_rows = "ward.D", + clustering_method_columns = "ward.D" + ) +``` + +![](man/fragments/figures/distance-1.png) + ## Grouping and splitting We can easily group the data (one group per dimension maximum, at the @@ -187,7 +210,7 @@ mtcars_tidy_groupings |> annotation_tile(hp) ``` -![](man/fragments/figures/unnamed-chunk-9-1.png) +![](man/fragments/figures/grouping-1.png) We can provide colour palettes to groupings @@ -209,7 +232,7 @@ mtcars_tidy_groupings |> annotation_tile(hp) ``` -![](man/fragments/figures/unnamed-chunk-10-1.png) +![](man/fragments/figures/grouping2-1.png) We can split based on the cladogram @@ -220,7 +243,7 @@ mtcars_tidy |> split_columns(2) ``` -![](man/fragments/figures/unnamed-chunk-11-1.png) +![](man/fragments/figures/split-1.png) We can split on kmean clustering (using ComplexHeatmap options, it is stochastic) @@ -235,7 +258,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-12-1.png) +![](man/fragments/figures/split2-1.png) ## Custom palettes @@ -253,7 +276,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-13-1.png) +![](man/fragments/figures/custom-1.png) A better-looking blue-to-red palette @@ -271,7 +294,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-14-1.png) +![](man/fragments/figures/redblue-1.png) Or a grid::colorRamp2 function for higher flexibility @@ -286,7 +309,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-15-1.png) +![](man/fragments/figures/flexible-1.png) We can use custom colors for tile annotation @@ -310,7 +333,7 @@ mtcars_tidy |> ## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was ## generated. -![](man/fragments/figures/unnamed-chunk-16-1.png) +![](man/fragments/figures/customtile-1.png) We can use grid::colorRamp2 function for tile annotation for specific color scales @@ -329,7 +352,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-17-1.png) +![](man/fragments/figures/customtile2-1.png) ## Multiple groupings and annotations @@ -346,7 +369,7 @@ tidyHeatmap::pasilla |> annotation_tile(activation) ``` -![](man/fragments/figures/unnamed-chunk-18-1.png) +![](man/fragments/figures/multiple-1.png) Remove legends, adding aesthetics to annotations in a modular fashion, using `ComplexHeatmap` arguments @@ -365,7 +388,7 @@ tidyHeatmap::pasilla |> annotation_tile(activation, show_legend = FALSE) ``` -![](man/fragments/figures/unnamed-chunk-19-1.png) +![](man/fragments/figures/nolegend-1.png) ## Annotation types @@ -396,7 +419,7 @@ pasilla_plus |> annotation_line(age) ``` -![](man/fragments/figures/unnamed-chunk-20-1.png) +![](man/fragments/figures/manyannotations-1.png) ## Annotation size @@ -418,7 +441,7 @@ pasilla_plus |> annotation_line(age, size = unit(0.3, "cm"), annotation_name_gp= gpar(fontsize = 8)) ``` -![](man/fragments/figures/unnamed-chunk-21-1.png) +![](man/fragments/figures/size-1.png) # Layer symbol @@ -452,7 +475,7 @@ tidyHeatmap::pasilla |> ) ``` -![](man/fragments/figures/unnamed-chunk-22-1.png) +![](man/fragments/figures/layer-1.png) # Layer text @@ -486,7 +509,7 @@ tidyHeatmap::pasilla |> ) ``` -![](man/fragments/figures/unnamed-chunk-23-1.png) +![](man/fragments/figures/layertext-1.png) # Adding heatmap side-by-side @@ -496,7 +519,7 @@ p_heatmap = heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row") p_heatmap + p_heatmap ``` -![](man/fragments/figures/unnamed-chunk-24-1.png) +![](man/fragments/figures/sidebyside-1.png) # ComplexHeatmap further styling @@ -511,7 +534,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-25-1.png) +![](man/fragments/figures/borders-1.png) ## Drop row clustering @@ -524,7 +547,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-26-1.png) +![](man/fragments/figures/droprow-1.png) ## Reorder rows elements @@ -539,7 +562,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-27-1.png) +![](man/fragments/figures/reorder-1.png) ## Size of dendrograms @@ -554,7 +577,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-28-1.png) +![](man/fragments/figures/sizedendro-1.png) ## Size of rows/columns titles and names @@ -571,7 +594,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-29-1.png) +![](man/fragments/figures/sizecolumns-1.png) ## External `ComplexHeatmap` functionalities @@ -587,7 +610,7 @@ heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row" ) %>% ComplexHeatmap::draw(heatmap_legend_side = "left" ) ``` -![](man/fragments/figures/unnamed-chunk-30-1.png) +![](man/fragments/figures/sidelegend-1.png) ### Add title using `draw` from `ComplexHeatmap` @@ -601,7 +624,7 @@ mtcars_tidy |> ) ``` -![](man/fragments/figures/unnamed-chunk-31-1.png) +![](man/fragments/figures/title-1.png) ## Using patchwork to integrate heatmaps @@ -632,7 +655,7 @@ wrap_heatmap(p_heatmap) + plot_layout(width = c(1, 0.3, 1)) ``` -![](man/fragments/figures/unnamed-chunk-32-1.png) +![](man/fragments/figures/patchworkintegrate-1.png) ### Add title using `ggtitle` from `ggplot2` @@ -643,4 +666,4 @@ mtcars_tidy |> ggplot2::ggtitle("TITLE") ``` -![](man/fragments/figures/unnamed-chunk-33-1.png) +![](man/fragments/figures/title2-1.png) diff --git a/man/fragments/figures/borders-1.png b/man/fragments/figures/borders-1.png new file mode 100644 index 0000000..88d725f Binary files /dev/null and b/man/fragments/figures/borders-1.png differ diff --git a/man/fragments/figures/custom-1.png b/man/fragments/figures/custom-1.png new file mode 100644 index 0000000..00661ac Binary files /dev/null and b/man/fragments/figures/custom-1.png differ diff --git a/man/fragments/figures/customtile-1.png b/man/fragments/figures/customtile-1.png new file mode 100644 index 0000000..88c005a Binary files /dev/null and b/man/fragments/figures/customtile-1.png differ diff --git a/man/fragments/figures/customtile2-1.png b/man/fragments/figures/customtile2-1.png new file mode 100644 index 0000000..68aabc9 Binary files /dev/null and b/man/fragments/figures/customtile2-1.png differ diff --git a/man/fragments/figures/distance-1.png b/man/fragments/figures/distance-1.png new file mode 100644 index 0000000..dfcdfbb Binary files /dev/null and b/man/fragments/figures/distance-1.png differ diff --git a/man/fragments/figures/droprow-1.png b/man/fragments/figures/droprow-1.png new file mode 100644 index 0000000..f8b05c9 Binary files /dev/null and b/man/fragments/figures/droprow-1.png differ diff --git a/man/fragments/figures/flexible-1.png b/man/fragments/figures/flexible-1.png new file mode 100644 index 0000000..1c1cc76 Binary files /dev/null and b/man/fragments/figures/flexible-1.png differ diff --git a/man/fragments/figures/grouping-1.png b/man/fragments/figures/grouping-1.png new file mode 100644 index 0000000..5a6e517 Binary files /dev/null and b/man/fragments/figures/grouping-1.png differ diff --git a/man/fragments/figures/grouping2-1.png b/man/fragments/figures/grouping2-1.png new file mode 100644 index 0000000..b4629a1 Binary files /dev/null and b/man/fragments/figures/grouping2-1.png differ diff --git a/man/fragments/figures/heatmap-1.png b/man/fragments/figures/heatmap-1.png new file mode 100644 index 0000000..f66bbac Binary files /dev/null and b/man/fragments/figures/heatmap-1.png differ diff --git a/man/fragments/figures/layer-1.png b/man/fragments/figures/layer-1.png new file mode 100644 index 0000000..920527d Binary files /dev/null and b/man/fragments/figures/layer-1.png differ diff --git a/man/fragments/figures/layertext-1.png b/man/fragments/figures/layertext-1.png new file mode 100644 index 0000000..c2f13bf Binary files /dev/null and b/man/fragments/figures/layertext-1.png differ diff --git a/man/fragments/figures/manyannotations-1.png b/man/fragments/figures/manyannotations-1.png new file mode 100644 index 0000000..57a451b Binary files /dev/null and b/man/fragments/figures/manyannotations-1.png differ diff --git a/man/fragments/figures/multiple-1.png b/man/fragments/figures/multiple-1.png new file mode 100644 index 0000000..b73e13d Binary files /dev/null and b/man/fragments/figures/multiple-1.png differ diff --git a/man/fragments/figures/nolegend-1.png b/man/fragments/figures/nolegend-1.png new file mode 100644 index 0000000..f55fefd Binary files /dev/null and b/man/fragments/figures/nolegend-1.png differ diff --git a/man/fragments/figures/patchworkintegrate-1.png b/man/fragments/figures/patchworkintegrate-1.png new file mode 100644 index 0000000..7235af0 Binary files /dev/null and b/man/fragments/figures/patchworkintegrate-1.png differ diff --git a/man/fragments/figures/redblue-1.png b/man/fragments/figures/redblue-1.png new file mode 100644 index 0000000..8ad7b87 Binary files /dev/null and b/man/fragments/figures/redblue-1.png differ diff --git a/man/fragments/figures/reorder-1.png b/man/fragments/figures/reorder-1.png new file mode 100644 index 0000000..9b2d774 Binary files /dev/null and b/man/fragments/figures/reorder-1.png differ diff --git a/man/fragments/figures/sidebyside-1.png b/man/fragments/figures/sidebyside-1.png new file mode 100644 index 0000000..8f0eb75 Binary files /dev/null and b/man/fragments/figures/sidebyside-1.png differ diff --git a/man/fragments/figures/sidelegend-1.png b/man/fragments/figures/sidelegend-1.png new file mode 100644 index 0000000..27d608f Binary files /dev/null and b/man/fragments/figures/sidelegend-1.png differ diff --git a/man/fragments/figures/size-1.png b/man/fragments/figures/size-1.png new file mode 100644 index 0000000..ac54d05 Binary files /dev/null and b/man/fragments/figures/size-1.png differ diff --git a/man/fragments/figures/sizecolumns-1.png b/man/fragments/figures/sizecolumns-1.png new file mode 100644 index 0000000..bccb194 Binary files /dev/null and b/man/fragments/figures/sizecolumns-1.png differ diff --git a/man/fragments/figures/sizedendro-1.png b/man/fragments/figures/sizedendro-1.png new file mode 100644 index 0000000..46a0228 Binary files /dev/null and b/man/fragments/figures/sizedendro-1.png differ diff --git a/man/fragments/figures/split-1.png b/man/fragments/figures/split-1.png new file mode 100644 index 0000000..5d47108 Binary files /dev/null and b/man/fragments/figures/split-1.png differ diff --git a/man/fragments/figures/split2-1.png b/man/fragments/figures/split2-1.png new file mode 100644 index 0000000..f9dc5d8 Binary files /dev/null and b/man/fragments/figures/split2-1.png differ diff --git a/man/fragments/figures/title-1.png b/man/fragments/figures/title-1.png new file mode 100644 index 0000000..8524ee0 Binary files /dev/null and b/man/fragments/figures/title-1.png differ diff --git a/man/fragments/figures/title2-1.png b/man/fragments/figures/title2-1.png new file mode 100644 index 0000000..0176b19 Binary files /dev/null and b/man/fragments/figures/title2-1.png differ diff --git a/man/fragments/figures/unnamed-chunk-10-1.png b/man/fragments/figures/unnamed-chunk-10-1.png deleted file mode 100644 index db9be09..0000000 Binary files a/man/fragments/figures/unnamed-chunk-10-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-11-1.png b/man/fragments/figures/unnamed-chunk-11-1.png deleted file mode 100644 index 940b8f9..0000000 Binary files a/man/fragments/figures/unnamed-chunk-11-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-12-1.png b/man/fragments/figures/unnamed-chunk-12-1.png deleted file mode 100644 index 000478c..0000000 Binary files a/man/fragments/figures/unnamed-chunk-12-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-13-1.png b/man/fragments/figures/unnamed-chunk-13-1.png deleted file mode 100644 index ae3bd17..0000000 Binary files a/man/fragments/figures/unnamed-chunk-13-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-14-1.png b/man/fragments/figures/unnamed-chunk-14-1.png deleted file mode 100644 index d51aed9..0000000 Binary files a/man/fragments/figures/unnamed-chunk-14-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-15-1.png b/man/fragments/figures/unnamed-chunk-15-1.png deleted file mode 100644 index 84daa13..0000000 Binary files a/man/fragments/figures/unnamed-chunk-15-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-16-1.png b/man/fragments/figures/unnamed-chunk-16-1.png deleted file mode 100644 index ba65f37..0000000 Binary files a/man/fragments/figures/unnamed-chunk-16-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-17-1.png b/man/fragments/figures/unnamed-chunk-17-1.png deleted file mode 100644 index 6915584..0000000 Binary files a/man/fragments/figures/unnamed-chunk-17-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-18-1.png b/man/fragments/figures/unnamed-chunk-18-1.png deleted file mode 100644 index 49fb870..0000000 Binary files a/man/fragments/figures/unnamed-chunk-18-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-19-1.png b/man/fragments/figures/unnamed-chunk-19-1.png deleted file mode 100644 index 0ff9d04..0000000 Binary files a/man/fragments/figures/unnamed-chunk-19-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-20-1.png b/man/fragments/figures/unnamed-chunk-20-1.png deleted file mode 100644 index e08ca2b..0000000 Binary files a/man/fragments/figures/unnamed-chunk-20-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-21-1.png b/man/fragments/figures/unnamed-chunk-21-1.png deleted file mode 100644 index e23319e..0000000 Binary files a/man/fragments/figures/unnamed-chunk-21-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-22-1.png b/man/fragments/figures/unnamed-chunk-22-1.png deleted file mode 100644 index 324b4de..0000000 Binary files a/man/fragments/figures/unnamed-chunk-22-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-23-1.png b/man/fragments/figures/unnamed-chunk-23-1.png deleted file mode 100644 index 923dde7..0000000 Binary files a/man/fragments/figures/unnamed-chunk-23-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-24-1.png b/man/fragments/figures/unnamed-chunk-24-1.png deleted file mode 100644 index bbd7046..0000000 Binary files a/man/fragments/figures/unnamed-chunk-24-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-25-1.png b/man/fragments/figures/unnamed-chunk-25-1.png deleted file mode 100644 index df68ce9..0000000 Binary files a/man/fragments/figures/unnamed-chunk-25-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-26-1.png b/man/fragments/figures/unnamed-chunk-26-1.png deleted file mode 100644 index e4ca469..0000000 Binary files a/man/fragments/figures/unnamed-chunk-26-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-27-1.png b/man/fragments/figures/unnamed-chunk-27-1.png deleted file mode 100644 index 8f317db..0000000 Binary files a/man/fragments/figures/unnamed-chunk-27-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-28-1.png b/man/fragments/figures/unnamed-chunk-28-1.png deleted file mode 100644 index ffadd9a..0000000 Binary files a/man/fragments/figures/unnamed-chunk-28-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-29-1.png b/man/fragments/figures/unnamed-chunk-29-1.png deleted file mode 100644 index 2a9486f..0000000 Binary files a/man/fragments/figures/unnamed-chunk-29-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-30-1.png b/man/fragments/figures/unnamed-chunk-30-1.png deleted file mode 100644 index 06bddae..0000000 Binary files a/man/fragments/figures/unnamed-chunk-30-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-31-1.png b/man/fragments/figures/unnamed-chunk-31-1.png deleted file mode 100644 index 5a27bf0..0000000 Binary files a/man/fragments/figures/unnamed-chunk-31-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-31-2.png b/man/fragments/figures/unnamed-chunk-31-2.png deleted file mode 100644 index 9222a81..0000000 Binary files a/man/fragments/figures/unnamed-chunk-31-2.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-32-1.png b/man/fragments/figures/unnamed-chunk-32-1.png deleted file mode 100644 index b020a1e..0000000 Binary files a/man/fragments/figures/unnamed-chunk-32-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-33-1.png b/man/fragments/figures/unnamed-chunk-33-1.png deleted file mode 100644 index 78b88fb..0000000 Binary files a/man/fragments/figures/unnamed-chunk-33-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-7-1.png b/man/fragments/figures/unnamed-chunk-7-1.png deleted file mode 100644 index ebabf85..0000000 Binary files a/man/fragments/figures/unnamed-chunk-7-1.png and /dev/null differ diff --git a/man/fragments/figures/unnamed-chunk-9-1.png b/man/fragments/figures/unnamed-chunk-9-1.png deleted file mode 100644 index b89661f..0000000 Binary files a/man/fragments/figures/unnamed-chunk-9-1.png and /dev/null differ diff --git a/man/fragments/intro.Rmd b/man/fragments/intro.Rmd index 8065da0..fd91640 100644 --- a/man/fragments/intro.Rmd +++ b/man/fragments/intro.Rmd @@ -52,7 +52,7 @@ Function | Description To install the most up-to-date version -```{r, eval=FALSE} +```{r install, eval=FALSE} devtools::install_github("stemangiola/tidyHeatmap") @@ -62,7 +62,7 @@ devtools::install_github("stemangiola/tidyHeatmap") To install the most stable version (however please keep in mind that this package is under a maturing lifecycle stage) -```{r, eval=FALSE} +```{r install2, eval=FALSE} install.packages("tidyHeatmap") @@ -82,14 +82,14 @@ element | feature | value | independent_variables Let's transform the mtcars dataset into a tidy "element-feature-independent variables" data frame. Where the independent variables in this case are 'hp' and 'vs'. -```{r, echo=FALSE, include=FALSE} +```{r library, echo=FALSE, include=FALSE} library(dplyr) library(tidyr) library(tidyHeatmap) library(grid) ``` -```{r} +```{r setup} mtcars_tidy <- mtcars |> as_tibble(rownames="Car name") |> @@ -113,7 +113,7 @@ For plotting, you simply pipe the input data frame into heatmap, specifying: - The annotations column name(s) mtcars -```{r} +```{r heatmap} mtcars_heatmap <- mtcars_tidy |> heatmap(`Car name`, Property, Value, scale = "row" ) |> @@ -124,15 +124,37 @@ mtcars_heatmap ## Saving -```{r eval=F} +```{r save, eval=F} mtcars_heatmap |> save_pdf("mtcars_heatmap.pdf") ``` +## Clustering + +Choose alternative clustering distance and methods. + +```{r distance} + +tidyHeatmap::pasilla |> + + heatmap( + .column = sample, + .row = symbol, + .value = `count normalised adjusted`, + scale = "row", + + # Arguments passed to ComplexHeatmap + clustering_distance_rows = "manhattan", + clustering_distance_columns = "manhattan", + clustering_method_rows = "ward.D", + clustering_method_columns = "ward.D" + ) +``` + ## Grouping and splitting We can easily group the data (one group per dimension maximum, at the moment only the vertical dimension is supported) with dplyr, and the heatmap will be grouped accordingly -```{r} +```{r grouping} # Make up more groupings mtcars_tidy_groupings = mtcars_tidy |> @@ -146,7 +168,7 @@ mtcars_tidy_groupings |> We can provide colour palettes to groupings -```{r} +```{r grouping2} mtcars_tidy_groupings |> group_by(vs, property_group) |> heatmap( @@ -167,7 +189,7 @@ mtcars_tidy_groupings |> We can split based on the cladogram -```{r} +```{r split} mtcars_tidy |> heatmap(`Car name`, Property, Value, scale = "row" ) |> split_rows(2) |> @@ -176,7 +198,7 @@ mtcars_tidy |> We can split on kmean clustering (using ComplexHeatmap options, it is stochastic) -```{r} +```{r split2} mtcars_tidy |> heatmap( `Car name`, Property, Value, @@ -191,7 +213,7 @@ mtcars_tidy |> We can easily use custom palette, using strings, hexadecimal color character vector, -```{r} +```{r custom} mtcars_tidy |> heatmap( `Car name`, @@ -204,7 +226,7 @@ mtcars_tidy |> A better-looking blue-to-red palette -```{r} +```{r redblue} mtcars_tidy |> heatmap( `Car name`, @@ -221,7 +243,7 @@ mtcars_tidy |> Or a grid::colorRamp2 function for higher flexibility -```{r} +```{r flexible} mtcars_tidy |> heatmap( `Car name`, @@ -234,7 +256,7 @@ mtcars_tidy |> We can use custom colors for tile annotation -```{r} +```{r customtile} mtcars_tidy |> heatmap( `Car name`, @@ -250,7 +272,7 @@ mtcars_tidy |> We can use grid::colorRamp2 function for tile annotation for specific color scales -```{r} +```{r customtile2} mtcars_tidy |> heatmap( `Car name`, @@ -266,7 +288,7 @@ mtcars_tidy |> ## Multiple groupings and annotations -```{r} +```{r multiple} tidyHeatmap::pasilla |> group_by(location, type) |> heatmap( @@ -281,7 +303,7 @@ tidyHeatmap::pasilla |> Remove legends, adding aesthetics to annotations in a modular fashion, using `ComplexHeatmap` arguments -```{r} +```{r nolegend} tidyHeatmap::pasilla |> group_by(location, type) |> @@ -300,7 +322,7 @@ tidyHeatmap::pasilla |> "tile", "point", "bar" and "line" are available -```{r} +```{r manyannotations} # Create some more data points pasilla_plus <- tidyHeatmap::pasilla |> @@ -329,7 +351,7 @@ pasilla_plus |> We can customise annotation sizes using the `grid::unit()`, and the size of their names using in-built `ComplexHeatmap` arguments -```{r} +```{r size} pasilla_plus |> heatmap( .column = sample, @@ -348,7 +370,7 @@ pasilla_plus |> Add a layer on top of the heatmap -```{r} +```{r layer} tidyHeatmap::pasilla |> # filter @@ -376,11 +398,12 @@ tidyHeatmap::pasilla |> ) ``` + # Layer text Add a text layer on top of the heatmap -```{r} +```{r layertext} tidyHeatmap::pasilla |> # filter @@ -410,7 +433,7 @@ tidyHeatmap::pasilla |> # Adding heatmap side-by-side -```{r, warning=FALSE} +```{r sidebyside, warning=FALSE} p_heatmap = heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row") @@ -422,7 +445,7 @@ p_heatmap + p_heatmap ## Add cell borders -```{r} +```{r borders} mtcars_tidy |> heatmap( `Car name`, Property, Value, @@ -433,7 +456,7 @@ mtcars_tidy |> ## Drop row clustering -```{r} +```{r droprow} mtcars_tidy |> heatmap( `Car name`, Property, Value, @@ -444,7 +467,7 @@ mtcars_tidy |> ## Reorder rows elements -```{r} +```{r reorder} library(forcats) mtcars_tidy |> mutate(`Car name` = fct_reorder(`Car name`, `Car name`, .desc = TRUE)) %>% @@ -457,7 +480,7 @@ mtcars_tidy |> ## Size of dendrograms -```{r} +```{r sizedendro} mtcars_tidy |> mutate(`Car name` = fct_reorder(`Car name`, `Car name`, .desc = TRUE)) %>% heatmap( @@ -470,7 +493,7 @@ mtcars_tidy |> ## Size of rows/columns titles and names -```{r} +```{r sizecolumns} mtcars_tidy |> mutate(`Car name` = fct_reorder(`Car name`, `Car name`, .desc = TRUE)) %>% heatmap( @@ -489,7 +512,7 @@ ComplexHeatmap has some graphical functionalities that are not included in the s ### Chainging side of legends -```{r} +```{r sidelegend} heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row" ) %>% as_ComplexHeatmap() %>% @@ -498,7 +521,7 @@ heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row" ) %>% ### Add title using `draw` from `ComplexHeatmap` -```{r} +```{r title} mtcars_tidy |> heatmap(`Car name`, Property, Value, scale = "row" ) |> as_ComplexHeatmap() |> @@ -511,7 +534,7 @@ mtcars_tidy |> ## Using patchwork to integrate heatmaps -```{r} +```{r patchworkintegrate} library(ggplot2) library(patchwork) @@ -541,7 +564,7 @@ wrap_heatmap(p_heatmap) + ### Add title using `ggtitle` from `ggplot2` -```{r} +```{r title2} mtcars_tidy |> heatmap(`Car name`, Property, Value, scale = "row" ) |> wrap_heatmap() + diff --git a/man/fragments/intro.html b/man/fragments/intro.html index 20b33ee..bf6a347 100644 --- a/man/fragments/intro.html +++ b/man/fragments/intro.html @@ -30,7 +30,7 @@ !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 - +h1.title {font-size: 38px;} +h2 {font-size: 30px;} +h3 {font-size: 24px;} +h4 {font-size: 18px;} +h5 {font-size: 16px;} +h6 {font-size: 12px;} +code {color: inherit; background-color: rgba(0, 0, 0, 0.04);} +pre:not([class]) { background-color: white } +code{white-space: pre-wrap;} +span.smallcaps{font-variant: small-caps;} +span.underline{text-decoration: underline;} +div.column{display: inline-block; vertical-align: top; width: 50%;} +div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} +ul.task-list{list-style: none;} +