diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..c57a63e6 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,56 @@ +# Contributing to bayesplot + +This outlines how to propose a change to bayesplot and is based on similar +instructions for tidyverse packages, including the contributing guidelines +generated by `usethis::use_tidy_contributing()`. + +## Fixing typos + +You can fix typos, spelling mistakes, or grammatical errors in the documentation +directly using the GitHub web interface, as long as the changes are made in the +_source_ file. This generally means you'll need to edit +[roxygen2 comments](https://roxygen2.r-lib.org/articles/roxygen2.html) in an `.R`, +not a `.Rd` file. You can find the `.R` file that generates the `.Rd` by reading +the comment in the first line. + +## Bigger changes + +If you want to make a bigger change, it's a good idea to first file an issue and +make sure someone from the team agrees that it’s needed. If you’ve found a bug, +please file an issue that illustrates the bug with a minimal reproducible +example (see e.g. the [tidyverse reprex instructions](https://www.tidyverse.org/help/#reprex)). +The tidyverse guide on [how to create a great issue](https://code-review.tidyverse.org/issues/) +has more advice. + +### Pull request process + +If you are new to creating pull requests here are some tips. Using the functions +from the `usethis` package is not required but can be helpful if this process is +new to you. + +* Fork the package and clone onto your computer. If you haven't done this before, we recommend using `usethis::create_from_github("stan-dev/bayesplot", fork = TRUE)`. + +* Install all development dependencies with `devtools::install_dev_deps()`, and then make sure the package passes R CMD check by running `devtools::check()`. + If R CMD check doesn't pass cleanly, it's a good idea to ask for help before continuing. +* Create a Git branch for your pull request (PR). We recommend using `usethis::pr_init("brief-description-of-change")`. + +* Make your changes, commit to git, and then create a PR by running `usethis::pr_push()`, and following the prompts in your browser. + The title of your PR should briefly describe the change. + The body of your PR should contain `Fixes #issue-number`. + +* For user-facing changes, add a bullet to the top of `NEWS.md` (i.e. just below the first header). Follow the style already used in `NEWS.md`. + +### Code style + +* New code should attempt to follow the style used in the package. When in doubt follow the tidyverse [style guide](https://style.tidyverse.org). + +* We use [roxygen2](https://cran.r-project.org/package=roxygen2), with [Markdown syntax](https://cran.r-project.org/web/packages/roxygen2/vignettes/rd-formatting.html), for documentation. + +* We use [testthat](https://cran.r-project.org/package=testthat) for unit tests. + Contributions with test cases included are easier to accept. + +## Code of Conduct + +Please note that the bayesplot project follows the Stan project's +[Code of Conduct](https://discourse.mc-stan.org/t/announcing-our-new-stan-code-of-conduct/23764). +By contributing to this project you agree to abide by its terms. diff --git a/R/bayesplot-ggplot-themes.R b/R/bayesplot-ggplot-themes.R index cf8b914d..f552b5fc 100644 --- a/R/bayesplot-ggplot-themes.R +++ b/R/bayesplot-ggplot-themes.R @@ -54,8 +54,7 @@ theme_default <- panel.spacing = unit(1.5, "lines"), legend.position = "right", legend.background = element_blank(), - legend.text = element_text(size = 13), - legend.text.align = 0, + legend.text = element_text(size = 13, hjust = 0), legend.key = element_blank() ) } diff --git a/R/bayesplot-helpers.R b/R/bayesplot-helpers.R index 0ae1f1e6..573835aa 100644 --- a/R/bayesplot-helpers.R +++ b/R/bayesplot-helpers.R @@ -333,7 +333,11 @@ calc_intervals <- function(x, p, med = TRUE, ...) { #' equivalent to using `legend_none()`. #' legend_move <- function(position = "right") { - theme(legend.position = position) + if (is.numeric(position) && "legend.position.inside" %in% fn_fmls_names(theme)) { + theme(legend.position = "inside", legend.position.inside = position) + } else { + theme(legend.position = position) + } } #' @rdname bayesplot-helpers #' @export diff --git a/R/mcmc-traces.R b/R/mcmc-traces.R index 3eba70de..e6a3e788 100644 --- a/R/mcmc-traces.R +++ b/R/mcmc-traces.R @@ -394,6 +394,7 @@ mcmc_rank_hist <- function(x, # Otherwise, use a grid. if (n_param > 1) { facet_f <- facet_grid + names(facet_args)[names(facet_args) == "facets"] <- "rows" } else { facet_f <- facet_wrap facet_args[["nrow"]] <- facet_args[["nrow"]] %||% 1 diff --git a/README.md b/README.md index 90ae3089..25077de9 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,10 @@ _J. R. Stat. Soc. A_, 182: 389-402. doi:10.1111/rssa.12378. * [Ask a question](https://discourse.mc-stan.org) (Stan Forums on Discourse) * [Open an issue](https://github.com/stan-dev/bayesplot/issues) (GitHub issues for bug reports, feature requests) +### Contributing + +We are always looking for new contributors! See [CONTRIBUTING.md](https://github.com/stan-dev/bayesplot/blob/master/.github/CONTRIBUTING.md) for details and/or reach out via the issue tracker. + ### Installation * Install from CRAN: diff --git a/tests/testthat/test-convenience-functions.R b/tests/testthat/test-convenience-functions.R index 693af99b..7389973e 100644 --- a/tests/testthat/test-convenience-functions.R +++ b/tests/testthat/test-convenience-functions.R @@ -110,7 +110,10 @@ test_that("legend_move returns correct theme object", { pos <- legend_move(c(0.25, 0.5)) expect_s3_class(pos, "theme") - expect_equivalent(pos, list(legend.position = c(0.25, 0.5))) + expect_equivalent( + pos$legend.position.inside %||% pos$legend.position, + c(0.25, 0.5) + ) expect_false(attr(pos, "complete")) }) test_that("legend_text returns correct theme object", {