From ed4fd2b271d3ca5c0a2494931ec64654615402af Mon Sep 17 00:00:00 2001 From: Ryo-N7 Date: Thu, 24 Oct 2019 15:03:25 +0900 Subject: [PATCH] fix interactive, fix show_text, add bc regular data, add "info" into regular bc df, edit readme and all vignettes, references #33, references #17, references #25, references #31 --- R/bullet_chart_symbols.R | 14 +-- R/bullet_chart_vline.R | 12 +-- R/bullet_chart_wide.R | 11 +- R/bulletchart.R | 7 +- R/bulletchartr_data.r | 25 ++++- R/internal_bc.R | 13 ++- README.md | 80 +++++++------- README.rmd | 45 ++++---- data/df_bc.rda | Bin 0 -> 355 bytes inst/extdata/df_bc.rda | Bin 0 -> 355 bytes man/bullet_chart.Rd | 4 + man/df.Rd | 3 +- man/df_bc.Rd | 28 +++++ man/figures/README-bulletchart-1.png | Bin 6985 -> 8438 bytes man/figures/README-unnamed-chunk-1-1.png | Bin 0 -> 9089 bytes man/figures/README-unnamed-chunk-2-1.png | Bin 0 -> 7920 bytes man/figures/README-unnamed-chunk-3-1.png | Bin 0 -> 7423 bytes tests/testthat/Rplots.pdf | Bin 25271 -> 37873 bytes vignettes/intro-arguments.Rmd | 87 +++++++++++++++ vignettes/intro-functions.Rmd | 130 ----------------------- vignettes/intro-inputs.Rmd | 26 +++-- vignettes/intro-to-bullet-charts.Rmd | 85 +++++++++++++++ vignettes/intro-to-bulletcharts.Rmd | 47 -------- 23 files changed, 339 insertions(+), 278 deletions(-) create mode 100644 data/df_bc.rda create mode 100644 inst/extdata/df_bc.rda create mode 100644 man/df_bc.Rd create mode 100644 man/figures/README-unnamed-chunk-1-1.png create mode 100644 man/figures/README-unnamed-chunk-2-1.png create mode 100644 man/figures/README-unnamed-chunk-3-1.png create mode 100644 vignettes/intro-arguments.Rmd delete mode 100644 vignettes/intro-functions.Rmd create mode 100644 vignettes/intro-to-bullet-charts.Rmd delete mode 100644 vignettes/intro-to-bulletcharts.Rmd diff --git a/R/bullet_chart_symbols.R b/R/bullet_chart_symbols.R index ebf1914..ccff1a2 100644 --- a/R/bullet_chart_symbols.R +++ b/R/bullet_chart_symbols.R @@ -145,7 +145,6 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g warning("When 'small' is set to TRUE, text will not show up by default! \n") } @@ -207,7 +206,6 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(1.5, "lines")) if (show_text == TRUE) { - g warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } @@ -216,7 +214,7 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 12 ) output @@ -224,10 +222,9 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 12 ) output - } } else if (small == TRUE) { @@ -252,8 +249,7 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g - warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") + warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } if (legend == FALSE) { @@ -261,7 +257,7 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 20 ) output @@ -269,7 +265,7 @@ bullet_chart_symbols <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 20 ) output } diff --git a/R/bullet_chart_vline.R b/R/bullet_chart_vline.R index 0d8f239..d89b329 100644 --- a/R/bullet_chart_vline.R +++ b/R/bullet_chart_vline.R @@ -90,7 +90,6 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + geom_point(aes(y = perc_year, shape = "Last Year"), size = 4.5, stroke = 3) + scale_shape_manual(" ", values = 124) + - geom_text(y = 1, aes(label = tooltip), vjust = -1.5, hjust = 0) + annotate("text", x = 0, y = ammended_data$percent_time + 1.5, hjust = 0, label = "Today", angle = 90, alpha = 0.5, size = 5) + theme(axis.text.y = element_text(size = 15, face = "bold"), @@ -135,7 +134,6 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g warning("When 'small' is set to TRUE, text will not show up by default! \n") } @@ -190,7 +188,6 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", plot.subtitle = element_text(hjust = 0.5, size = 8)) if (show_text == TRUE) { - g warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } @@ -199,7 +196,7 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 12 ) output @@ -207,7 +204,7 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 12 ) output @@ -231,7 +228,6 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } @@ -240,7 +236,7 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 20 ) output @@ -248,7 +244,7 @@ bullet_chart_vline <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.4 + width_svg = 20 ) output diff --git a/R/bullet_chart_wide.R b/R/bullet_chart_wide.R index 9f94cf9..d600b0a 100644 --- a/R/bullet_chart_wide.R +++ b/R/bullet_chart_wide.R @@ -139,7 +139,6 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g warning("When 'small' is set to TRUE, text will not show up by default! \n") } @@ -182,7 +181,6 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", plot.subtitle = element_text(hjust = 0.5, size = 8)) if (show_text == TRUE) { - g warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } @@ -191,7 +189,7 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 12 ) output @@ -199,7 +197,7 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 12 ) output @@ -231,7 +229,6 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", legend.key.size = unit(0.8, "lines")) if (show_text == TRUE) { - g warning("When 'chart_type' is set to 'interactive', text will not show up by default! \n") } @@ -240,7 +237,7 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + theme(legend.position = "none") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 20 ) output @@ -248,7 +245,7 @@ bullet_chart_wide <- function(file_name = NULL, sheet_name = "Sheet1", g <- g + guides(shape = guide_legend(nrow = 1)) + theme(legend.position = "bottom") output <- girafe(code = {print(g)}, - width = 0.5 + width_svg = 20 ) output diff --git a/R/bulletchart.R b/R/bulletchart.R index 2698236..af5c477 100644 --- a/R/bulletchart.R +++ b/R/bulletchart.R @@ -17,6 +17,9 @@ #' @param legend PARAM_DESCRIPTION, Default: TRUE #' @return bullet chart plot(s) #' @details Stephen Few style bullet chart +#' @examples +#' data("df_bc") +#' bullet_chart(dataframe = df_bc) #' @rdname bullet_chart #' @export #' @importFrom ggplot2 ggplot geom_col aes geom_segment coord_flip @@ -103,10 +106,10 @@ bullet_chart <- function(file_name = NULL, sheet_name = "Sheet1", breaks = seqbreaks) + scale_x_continuous(expand = c(0, 0)) + scale_fill_manual(values = cols, name = NULL, - labels = c("Current", "High", "Medium", "Low")) + + breaks = c("Current", "High", "Medium", "Low")) + ## var_info takes Indicator name AND any extra info provided in ## the 'info' variable, all calculated in `field_calculator()` - labs(title = glue::glue("{data$var_info}")) + + labs(title = glue::glue("{data$varinfo}")) + theme(title = element_text(face = "bold"), plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5, size = 8), diff --git a/R/bulletchartr_data.r b/R/bulletchartr_data.r index ef45347..ebc438d 100644 --- a/R/bulletchartr_data.r +++ b/R/bulletchartr_data.r @@ -1,5 +1,6 @@ #' example dataframe of indicators and targets -#' @format This data set contains indicator values and target data used in the examples in README. +#' @format This data set contains indicator values and target data +#' used in the examples in README. #' #' The variables are as follows: #' @@ -16,3 +17,25 @@ #' @name df #' @usage data(df) "df" + +#' example dataframe for regular scale bullet chart +#' @format This data set contains indicator values and target data +#' used in the examples in README for the regular scale bullet charts. +#' +#' The variables are as follows: +#' +#' \itemize{ +#' \item variable. name of the indicator +#' \item info. extra info about indicator +#' \item target. target value of indicator +#' \item current. current value of indicator +#' \item low. low value of indicator +#' \item medium. medium value of indicator +#' \item high. high value of indicator +#' +#' } +#' +#' @keywords datasets +#' @name df_bc +#' @usage data(df_bc) +"df_bc" diff --git a/R/internal_bc.R b/R/internal_bc.R index f30138f..8c62b27 100644 --- a/R/internal_bc.R +++ b/R/internal_bc.R @@ -69,7 +69,8 @@ field_calculator <- function(file_name = NULL, sheet_name = "Sheet1", Low = !!Low, Medium = !!Medium, High = !!High, - target = !!tar + target = !!tar, + info = !!inf ) ## filter NO Target indicators @@ -101,14 +102,18 @@ field_calculator <- function(file_name = NULL, sheet_name = "Sheet1", ## reshape ammended_data <- ammended_data %>% select(-tarhigh) %>% - tidyr::pivot_longer(-c(indicator_name, target), + tidyr::pivot_longer(-c(indicator_name, target, info), names_to = "allvals", values_to = "vals") %>% dplyr::mutate(allvals = forcats::as_factor(allvals)) - # Variable info text: + ## Variable info text + ## relevel qualitative labels so show up in order on legend + ## ammended_data$allvals %>% levels() ammended_data <- ammended_data %>% - mutate(varinfo = glue("{indicator_name}: {info}")) + mutate(varinfo = glue("{indicator_name}: {info}")) %>% + mutate(allvals = forcats::fct_relevel(allvals, + c("Current", "High", "Medium", "Low"))) # ammended_data <- ammended_data %>% # mutate(allvals = forcats::fct_relevel(allvals, c("Current", "High", "Medium", "Low"))) diff --git a/README.md b/README.md index 73200b8..9fe4204 100755 --- a/README.md +++ b/README.md @@ -11,65 +11,67 @@ coverage](https://codecov.io/gh/ACDIVOCATech/bulletchartr/branch/master/graph/ba Status](https://travis-ci.org/ACDIVOCATech/bulletchartr.svg?branch=master)](https://travis-ci.org/ACDIVOCATech/bulletchartr) -## What is a bullet chart? +This package, `bulletchartr` is based on visualizing M\&E deliverables +or “Indicators”, however, it can be handy for anyone that depends on +monitoring Key Performance Indicators (KPIs) or needs to track progress +against different targets. + +## Installation + +``` r +# Install the package from GitHub: +# install.packages("devtools") + +devtools::install_github("ACDIVOCATech/bulletchartr") +``` The **bullet chart** was invented by [Stephen Few](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pIndicatorData), for the purpose of showing tons of info in a condensed form in KPIs. -This type of graph is a variation on a typical bar graph with a thick -line presenting an important point for that indicator (benchmark, -performance target, etc.) and other bars in the background that can -signify different levels of performance (low-high, bad-good, etc.). The -bullet chart makes it very easy to compare between related measures -(e.g. present status versus status at similar time in the past). - The output of the `bullet_chart()` function most closely resembles Stephen Few’s design: ``` r -bullet_chart(file_name = read_example("Indicators_Targets_ext.xlsx")) +## load example data +load(read_example("df_bc.rda")) + +bullet_chart(dataframe = df_bc) ``` -The single black bar represents the current value of the indicator while -the different hue columns represent last week’s value (darker hue) and -last year’s value (lighter hue). The bar for each Indicator show the -progression along the horizontal-axis presenting the percentage of the -yearly target completed. This axis also shows the percent of the year -gone by with the vertical line indicating what exact percentage “Today” -is, along this percentage. - -As you can see, the bars show the progression along the horizontal-axis -presenting the percentage of the yearly target completed. Also, along -this axis is the percent of the year gone by with a vertical line -indicating what exact percentage **“Today”** is along this percentage. -It is necessary to use percentages as we have multiple indicators of -varying units/parameters for each project\! - -The different grey colored bars represent the values of the indicator at -“Last Week” and “Last Year”. The grey scaled bars can represent any -qualitative ranges such as “bad - good - excellent” or “disabled - -repairing - fixed”, etc. In the near future we will look to expand the -capabilities of this package to allow users to specify these qualitative -ranges to fit their needs. +The outputs of `bullet_chart_symbols()`, `bullet_chart_wide()`, and +`bullet_chart_vline()` have a different x-axis scale to a regular bullet +chart. -This package, `bulletchartr` is based on visualizing M\&E deliverables -or “Indicators”, however, it can be handy for anyone that depends on -monitoring Key Performance Indicators (KPIs) or needs to track progress -against different targets. +The x-axis represents both the percentage of the yearly target AND the +percentage of the year that has passed. There is a vertical line showing +`TODAY`, which shows at what percentage of the year **and** what +percentage of the target we are at right now. The color inside the bar +is **green** if we are near or past the `TODAY` line, **orange** when +we’re close and **red** when we’re very behind schedule/target. -## Installation +``` r +bullet_chart_symbols(file_name = read_example("Indicators_Targets_ext.xlsx")) +``` + + ``` r -# Install the package from GitHub: -# install.packages("devtools") +bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx")) +``` -devtools::install_github("ACDIVOCATech/bulletchartr") + + +``` r +bullet_chart_vline(file_name = read_example("Indicators_Targets_ext.xlsx")) ``` -(picture of all 4 types) + + +Please read the package vignette, “Introduction to bullet charts” for a +more detailed overview\! ## Future direction diff --git a/README.rmd b/README.rmd index f07c7f3..dcf715f 100755 --- a/README.rmd +++ b/README.rmd @@ -30,40 +30,47 @@ library(bulletchartr) [![Travis-CI Build Status](https://travis-ci.org/ACDIVOCATech/bulletchartr.svg?branch=master)](https://travis-ci.org/ACDIVOCATech/bulletchartr) +This package, `bulletchartr` is based on visualizing M&E deliverables or "Indicators", however, it can be handy for anyone that depends on monitoring Key Performance Indicators (KPIs) or needs to track progress against different targets. -## What is a bullet chart? - -The __bullet chart__ was invented by [Stephen Few](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pIndicatorData), for the purpose of showing tons of info in a condensed form in KPIs. - -This type of graph is a variation on a typical bar graph with a thick line presenting an important point for that indicator (benchmark, performance target, etc.) and other bars in the background that can signify different levels of performance (low-high, bad-good, etc.). The bullet chart makes it very easy to compare between related measures (e.g. present status versus status at similar time in the past). +## Installation -The output of the `bullet_chart()` function most closely resembles Stephen Few's design: +```{r install, eval = FALSE} +# Install the package from GitHub: +# install.packages("devtools") -```{r bulletchart, fig.width=6,fig.height=5, echo=TRUE} -bullet_chart(file_name = read_example("Indicators_Targets_ext.xlsx")) +devtools::install_github("ACDIVOCATech/bulletchartr") ``` -The single black bar represents the current value of the indicator while the different hue columns represent last week's value (darker hue) and last year's value (lighter hue). The bar for each Indicator show the progression along the horizontal-axis presenting the percentage of the yearly target completed. This axis also shows the percent of the year gone by with the vertical line indicating what exact percentage "Today" is, along this percentage. +The __bullet chart__ was invented by [Stephen Few](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pIndicatorData), for the purpose of showing tons of info in a condensed form in KPIs. -As you can see, the bars show the progression along the horizontal-axis presenting the percentage of the yearly target completed. Also, along this axis is the percent of the year gone by with a vertical line indicating what exact percentage __"Today"__ is along this percentage. It is necessary to use percentages as we have multiple indicators of varying units/parameters for each project! +The output of the `bullet_chart()` function most closely resembles Stephen Few's design: -The different grey colored bars represent the values of the indicator at "Last Week" and "Last Year". The grey scaled bars can represent any qualitative ranges such as "bad - good - excellent" or "disabled - repairing - fixed", etc. In the near future we will look to expand the capabilities of this package to allow users to specify these qualitative ranges to fit their needs. +```{r bulletchart, fig.width=6,fig.height=8, echo=TRUE} +## load example data +load(read_example("df_bc.rda")) -This package, `bulletchartr` is based on visualizing M&E deliverables or "Indicators", however, it can be handy for anyone that depends on monitoring Key Performance Indicators (KPIs) or needs to track progress against different targets. +bullet_chart(dataframe = df_bc) +``` -## Installation +The outputs of `bullet_chart_symbols()`, `bullet_chart_wide()`, and `bullet_chart_vline()` have a different x-axis scale to a regular bullet chart. -```{r install, eval = FALSE} -# Install the package from GitHub: -# install.packages("devtools") +The x-axis represents both the percentage of the yearly target AND the percentage of the year that has passed. There is a vertical line showing `TODAY`, which shows at what percentage of the year __and__ what percentage of the target we are at right now. +The color inside the bar is __green__ if we are near or past the `TODAY` line, __orange__ when we’re close and __red__ when we're very behind schedule/target. -devtools::install_github("ACDIVOCATech/bulletchartr") +```{r} +bullet_chart_symbols(file_name = read_example("Indicators_Targets_ext.xlsx")) ``` +```{r} +bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx")) +``` -(picture of all 4 types) +```{r} +bullet_chart_vline(file_name = read_example("Indicators_Targets_ext.xlsx")) +``` + +Please read the package vignette, "Introduction to bullet charts" for a more detailed overview! ## Future direction Currently this package is geared more toward non-R using M&E people (therefore, the Excel file input alongside a dataframe input), however as we develop this package further we want to go towards being able to make the `bullet_chart` functions more customizable for general use cases. - diff --git a/data/df_bc.rda b/data/df_bc.rda new file mode 100644 index 0000000000000000000000000000000000000000..3f550f77197e97f854f18e7cb82f68dbe730295a GIT binary patch literal 355 zcmV-p0i6CHiwFP!0000023=B1PQx$|HTe)4QB*z$@PY+ws({2kQduI98Xon8ApwjMBfwOE{{zpe1Hpi~A80gl8xb zgjSu3?ugcv(8Rfq;Hf#(=J4zy2m*etwZj`S$4tN|K?R01gI7{KXb*<HI!6Jz`T z6Dm|frc5Ag(drK;|~~`4GW9{007yV Brj7sr literal 0 HcmV?d00001 diff --git a/inst/extdata/df_bc.rda b/inst/extdata/df_bc.rda new file mode 100644 index 0000000000000000000000000000000000000000..3f550f77197e97f854f18e7cb82f68dbe730295a GIT binary patch literal 355 zcmV-p0i6CHiwFP!0000023=B1PQx$|HTe)4QB*z$@PY+ws({2kQduI98Xon8ApwjMBfwOE{{zpe1Hpi~A80gl8xb zgjSu3?ugcv(8Rfq;Hf#(=J4zy2m*etwZj`S$4tN|K?R01gI7{KXb*<HI!6Jz`T z6Dm|frc5Ag(drK;|~~`4GW9{007yV Brj7sr literal 0 HcmV?d00001 diff --git a/man/bullet_chart.Rd b/man/bullet_chart.Rd index 41d48b4..0685fcf 100755 --- a/man/bullet_chart.Rd +++ b/man/bullet_chart.Rd @@ -45,3 +45,7 @@ Creates a bullet chart using an indicator's values for the axis scales. \details{ Stephen Few style bullet chart } +\examples{ +data("df_bc") +bullet_chart(dataframe = df_bc) +} diff --git a/man/df.Rd b/man/df.Rd index 2cedcb7..f850abe 100755 --- a/man/df.Rd +++ b/man/df.Rd @@ -4,7 +4,8 @@ \name{df} \alias{df} \title{example dataframe of indicators and targets} -\format{This data set contains indicator values and target data used in the examples in README. +\format{This data set contains indicator values and target data +used in the examples in README. The variables are as follows: diff --git a/man/df_bc.Rd b/man/df_bc.Rd new file mode 100644 index 0000000..0307029 --- /dev/null +++ b/man/df_bc.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/bulletchartr_data.r +\docType{data} +\name{df_bc} +\alias{df_bc} +\title{example dataframe for regular scale bullet chart} +\format{This data set contains indicator values and target data +used in the examples in README for the regular scale bullet charts. + +The variables are as follows: + + \itemize{ + \item variable. name of the indicator + \item info. extra info about indicator + \item target. target value of indicator + \item current. current value of indicator + \item low. low value of indicator + \item medium. medium value of indicator + \item high. high value of indicator + + }} +\usage{ +data(df_bc) +} +\description{ +example dataframe for regular scale bullet chart +} +\keyword{datasets} diff --git a/man/figures/README-bulletchart-1.png b/man/figures/README-bulletchart-1.png index 2d238204cec14683ec864973cd6a92d193a1d36f..5c7cc5bad6062e3c81599f1d32cfc4a847d0e085 100644 GIT binary patch literal 8438 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 JLX~^L{|Eg6Co=#5 literal 6985 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 Q)WLPe$ilGr)Wyhu0O}dnivR!s diff --git a/man/figures/README-unnamed-chunk-1-1.png b/man/figures/README-unnamed-chunk-1-1.png new file mode 100644 index 0000000000000000000000000000000000000000..51513f2ab468a046d9e342bb3bd1d4ddbd248315 GIT binary patch literal 9089 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 literal 0 HcmV?d00001 diff --git a/man/figures/README-unnamed-chunk-3-1.png b/man/figures/README-unnamed-chunk-3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c9543e2c6e782cc46933559f5962987a22a77c0c GIT binary patch literal 7423 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 GrTRYtFk^B6 literal 25271 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 apKr(+Lwm;?gkfQ0W@SO6q!g1ENBch&lTnZW diff --git a/vignettes/intro-arguments.Rmd b/vignettes/intro-arguments.Rmd new file mode 100644 index 0000000..956f146 --- /dev/null +++ b/vignettes/intro-arguments.Rmd @@ -0,0 +1,87 @@ +--- +title: "bulletchartr function arguments" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{bulletchartr function arguments} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + warning = FALSE, + comment = "#>" +) +``` + +```{r setup} +library(bulletchartr) +``` + +# Function arguments + +## Different calendars + +The vertical line showing `Today` can be customized depending on whether you are measuring by a fiscal year, a calendar year, or a custom date. `Today` shown on a Fiscal Year calendar (considering that today's physical date is `r Sys.Date()`.) is show below: + +```{r cal-type,fig.width=6,fig.height=5, warning=FALSE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets_ext.xlsx"), + cal_type = "fis") +``` + +or for a calendar year: + +```{r cal-type2,fig.width=6,fig.height=5, warning=FALSE} +bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx"), + cal_type = "cal", + legend = TRUE) +``` + +or using a custom date that you can feed directly into the plotting function: + +```{r cal-custom,fig.width=6,fig.height=5, warning=FALSE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets_ext.xlsx"), + cal_type = "2019/02/15") +``` + +By doing this the function will automatically calculate your progress and targets according to the calendar type that you specified. + +## `small` version + +If you want to see a small version of your "Plot" panel just specify `small` = __TRUE__. This will allow you to quickly check the entire plot without having to enlarge it over and over again in the pop-up window. The small version also hides the text so as to not clutter up the limited space. + +```{r small} +bullet_chart_wide(file_name = read_example("Indicators_Targets.xlsx"), + small = TRUE) +``` + +Do note that by default the informational text will not show up by default when `small = TRUE` even when you set the argument `show_text` to TRUE, you will get a short warning when you do. + +## Show legends + +You have the option to show legends for both the indicator schedule and the symbols by specifying `legend` = **TRUE**. Default is **FALSE**. + +```{r legends, warning=FALSE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets.xlsx"), + legend = TRUE) +``` + +## Show `Last Week` & `Last Year` info text + +```{r, warning=FALSE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets.xlsx"), + legend = TRUE, + show_text = TRUE) +``` + +## Chart type: Static vs. Interactive + +An interactive version where you can hover your mouse over the bar to see the informational text is available with the `chart_type` argument. This is because the `show_text` option can make the chart look rather busy at times. The interactivity is handled by the {ggiraph} package. + +```{r, warning=FALSE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets.xlsx"), + legend = TRUE, + chart_type = "interactive") +``` + diff --git a/vignettes/intro-functions.Rmd b/vignettes/intro-functions.Rmd deleted file mode 100644 index c0e1095..0000000 --- a/vignettes/intro-functions.Rmd +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: "bullchartr functions and arguments" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{bullchartr functions and arguments} - %\VignetteEngine{knitr::rmarkdown} - %\VignetteEncoding{UTF-8} ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>" -) -``` - -```{r setup} -library(bulletchartr) -``` - - -# {bulletchartr} functions! - -## `bullet_chart()` - -This is the original chart created by Stephen Few. - - -```{r bulletchart, fig.width=6,fig.height=5, echo=TRUE} -#bullet_chart(file_name = read_example("Indicators_Targets_ext.xlsx")) -``` - - -## Time-Constraint bullet charts - -The following versions are a different type of bullet chart that we use at ACDI/VOCA. The main feature is the standardized scale for progress towards a "Yearly Target" and "Year" expressed as percentages. - -To read the chart you need to: - -## `bullet_chart_wide()` - -`bullet_chart_wide()` is similar to the standard bullet chart but uses different thicknesses for the bars as the benchmarks for previous time points (last week and last year) to further -accentuate the difference graphically. - -```{r wide, fig.width=6, fig.height=5, echo=TRUE} -bullet_chart_wide(file_name = read_example("Indicators_Targets_full.xlsx"), - legend = TRUE) -``` - -## `bullet_chart_symbols()` - -`bullet_chart_symbols()` shows a version with different symbols representing the indicator value for -last week (diamond) and last year (circle). - -```{r symbols,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_symbols(file_name = read_example("Indicators_Targets_full.xlsx")) -``` - -## `bullet_chart_vline()` - -`bullet_chart_vline()` provides a version with a single colored bar representing the current value -for the indicator along with a black vertical line representing the indicator value at this time -last year. - -```{r vline,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_vline(file_name = read_example("Indicators_Targets_ext.xlsx"), - cal_type = "cal") -``` - - -# Function arguments - -## Different calendars - -The vertical line showing `Today` can be customized depending on whether you are measuring by a fiscal year, a calendar year, or a custom date. `Today` shown on a Fiscal Year calendar (considering that today's physical date is `r Sys.Date()`.) is show below: - -```{r cal-type,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_symbols(file_name = read_example("Indicators_Targets_full.xlsx"), - cal_type = "fis") -``` - -or for a calendar year: - -```{r cal-type2,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx"), - cal_type = "cal", - legend = TRUE) -``` - -or using a custom date that you can feed directly into the plotting function: - -```{r cal-custom,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_symbols(file_name = read_example("Indicators_Targets_ext.xlsx"), - cal_type = "2018/02/15") -``` - -By doing this the function will automatically calculate your progress and targets according to the calendar type that you specified. - -## `small` version - -If you want to see a small version of your "Plot" panel just specify `small` = __TRUE__. This will allow you to quickly check the entire plot without having to enlarge it over and over again in the pop-up window. The small version also hides the text so as to not clutter up the limited space. - -```{r small,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_wide(file_name = read_example("Indicators_Targets.xlsx"), - small = "TRUE") -``` - -## Show legends - -You have the option to show legends for both the indicator schedule and the symbols by specifying `legend` = **TRUE**. Default is **FALSE**. - -```{r legends,fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_symbols(file_name = read_example("Indicators_Targets.xlsx"), - legend = TRUE) -``` - -## Show `Last Week` & `Last Year` info text - -```{r} - -``` - - -## remove indicators with Targets == NA or 0 - -```{r} - -``` - - diff --git a/vignettes/intro-inputs.Rmd b/vignettes/intro-inputs.Rmd index 27462c0..fd32259 100644 --- a/vignettes/intro-inputs.Rmd +++ b/vignettes/intro-inputs.Rmd @@ -1,8 +1,8 @@ --- -title: "bullchartr inputs" +title: "bulletchartr data inputs" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{bullchartr inputs} + %\VignetteIndexEntry{bulletchartr data inputs} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -10,6 +10,7 @@ vignette: > ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, + warning = FALSE, comment = "#>" ) ``` @@ -21,14 +22,11 @@ library(bulletchartr) # Dataframe or Excel input -To use the functions included in this package, one can provide either a dataframe or Excel (.xlsx) file as the input. Either file input needs to contain columns with names that correspond to the following: `indicator_name`, `actual`, `actual_lastweek`, `actual_lastyear`, and `target`. +To use the functions included in this package, one can provide either a dataframe or Excel (.xlsx) file as the input. For the "time-constraint" version of the bullet chart (`bullet_chart_symbol()`, `bullet_chart_wide()`, or `bullet_chart_vline()`) either file input needs to contain columns with names that correspond to the following: `indicator_name`, `actual`, `actual_lastweek`, `actual_lastyear`, and `target`. ```{r df-or-excel, fig.width=6,fig.height=5, eval=FALSE} -## read in example dataframe, 'df' -load(read_example("df.rda")) -bullet_chart(dataframe = df) - -bullet_chart(file_name = read_example("Indicators_Targets.xlsx")) +## read in example "Indicators_Targets.xlsx" file +bullet_chart_symbols(file_name = read_example("Indicators_Targets.xlsx")) ``` See below for an example of what this might look like (in an Excel sheet): @@ -66,7 +64,13 @@ The percentages along the horizontal axis are calculated by: * `PercWeek`: Last week's value of the indicator as percent of yearly target and percent of the year * `PercYear`: Last year's value of the indicator as percent of yearly target and percent of the year -`BehindBy` is calculated by: `Perc - PercentTime` and shows how far behind the current value of the indicator is to the target value for the current time and shows up as the text above each bar: -* "OK!": Shows that the current value of the indicator meets the target value for the current time -* "Need ___ more": Shows exactly how much more of the indicator is needed to reach the target value for the current time +## Inputs for regular `bullet_chart()` + +For the regular `bullet_chart()` either file input (Excel file or dataframe) needs to contain columns with names that correspond to the following: `indicator_name`, `info`, `current`, `low`, `medium`, `high`, and `target`. Just like with the other bullet chart functions your data can contain the values corresponding to these columns with any name you wish, but you need to specify which of your data's column names matches up with the ones that the function recognizes. + +For example if the "high" values for indicators are stored in a column called "highest_values" then within the function you need to specify: + +`bullet_chart(dataframe = df, high = "highest_values")` + +And so on. Do note that even if __your__ column name is different from any of the qualitative labels ("low", "medium", "high") they will still show up on the graph as "Low", "Medium", "High". In the future we would like to extend the qualitative labels on the graph to allow for user input. For example, you may want the qualitative labels to be "Poor", "Satisfactory", "Excellent" instead. diff --git a/vignettes/intro-to-bullet-charts.Rmd b/vignettes/intro-to-bullet-charts.Rmd new file mode 100644 index 0000000..2b2eb5e --- /dev/null +++ b/vignettes/intro-to-bullet-charts.Rmd @@ -0,0 +1,85 @@ +--- +title: "Introduction to bullet charts" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Introduction to bullet charts} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + warning = FALSE, + comment = "#>" +) +``` + +# What is a bullet chart? + +The __bullet chart__ was invented by [Stephen Few](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf), for the purpose of showing tons of info in a condensed form in KPIs. + +This type of graph is a variation on a typical bar graph with a thick line presenting an important point for that indicator (benchmark, performance target, etc.) and other bars in the background that can signify different levels of performance (low-high, bad-good, etc.). The bullet chart makes it very easy to compare between related measures (e.g. present status versus status at similar time in the past). + +# The {bulletchartr} functions + +{bulletchartr} contains 4 different chart functions divided into two categories, the regular bullet chart (`bullet_chart()`) and the time-constraint versions (`bullet_chart_wide()`, `bullet_chart_symbol()`, and `bullet_chart_vline()`). + +## Regular `bullet_chart()` + +The output of the `bullet_chart()` function most closely resembles Stephen Few's design: + +```{r bulletchart, fig.width=6,fig.height=8, echo=TRUE} +library(bulletchartr) +## load example data +load(read_example("df_bc.rda")) + +bullet_chart(dataframe = df_bc) +``` + +The single black bar represents the current value of the indicator while the different hue columns represent certain qualitative labels. Currently, the labels are set to "Low", "Medium", and "High" but in future versions we would like to have the user be able to input their own labels. The fill color of the qualitative values go from a darker hue from "Low" to a lighter hue for "High". The red symbol denotes the target value set for that indicator. + +Each indicator has it's own set scale with a minimum value set to 0 and a maximum value with several breaks/labels in between. For now the original Stephen Few design bullet chart is the only one using a regular scale along the x-axis. This may change in the future. + +## Time-constraint bullet chart + +The time-constraint version of the bullet chart is what we use at ACDI/VOCA to track the progress of our indicators/KPIs against a target. It is a slightly modified version of the original bullet chart with the main difference being the x-axis. As you can see, the bars show the progression along the horizontal-axis presenting the percentage of the yearly target completed. Also, along this axis is the percent of the year gone by with a vertical line indicating what exact percentage __"Today"__ is along this percentage. It is necessary to use percentages as we have multiple indicators of varying units/parameters for each project! + +```{r bulletchart-time, fig.width=6,fig.height=5, echo=TRUE} +bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx"), + cal_type = "cal") +``` + +The different grey colored bars represent the values of the indicator at "Last Week" and "Last Year". The grey scaled bars can represent any qualitative ranges such as "bad - good - excellent" or "disabled - repairing - fixed", etc. In the near future we will look to expand the capabilities of this package to allow users to specify these qualitative ranges to fit their needs. + +### `bullet_chart_wide()` + +`bullet_chart_wide()` is similar to the standard bullet chart but uses different thicknesses for the bars as the benchmarks for previous time points (last week and last year) to further accentuate the difference graphically. + +```{r wide, fig.width=6, fig.height=5, echo=TRUE} +bullet_chart_wide(file_name = read_example("Indicators_Targets_full.xlsx"), + legend = TRUE) +``` + +### `bullet_chart_symbols()` + +`bullet_chart_symbols()` shows a version with different symbols representing the indicator value for last week (diamond) and last year (circle). + +```{r symbols,fig.width=6,fig.height=5, echo=TRUE} +bullet_chart_symbols(file_name = read_example("Indicators_Targets_full.xlsx")) +``` + +### `bullet_chart_vline()` + +`bullet_chart_vline()` provides a version with a single colored bar representing the current value for the indicator along with a black vertical line representing the indicator value at this time last year. + +```{r vline,fig.width=6,fig.height=5, echo=TRUE} +bullet_chart_vline(file_name = read_example("Indicators_Targets_ext.xlsx"), + cal_type = "cal") +``` + +For more information on the different arguments of {bulletchartr}, please read the "bulletchartr function arguments" vignette. + +# Resources + +* [Bullet Graph Design Specification](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf) diff --git a/vignettes/intro-to-bulletcharts.Rmd b/vignettes/intro-to-bulletcharts.Rmd deleted file mode 100644 index fd1360f..0000000 --- a/vignettes/intro-to-bulletcharts.Rmd +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "Introduction to bulletcharts" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{Introduction to bulletcharts} - %\VignetteEngine{knitr::rmarkdown} - %\VignetteEncoding{UTF-8} ---- - -```{r, include = FALSE} -knitr::opts_chunk$set( - collapse = TRUE, - comment = "#>" -) -``` - -# What is a bullet chart? - -The __bullet chart__ was invented by [Stephen Few](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf), for the purpose of showing tons of info in a condensed form in KPIs. - -This type of graph is a variation on a typical bar graph with a thick line presenting an important point for that indicator (benchmark, performance target, etc.) and other bars in the background that can signify different levels of performance (low-high, bad-good, etc.). The bullet chart makes it very easy to compare between related measures (e.g. present status versus status at similar time in the past). - -The output of the `bullet_chart()` function most closely resembles Stephen Few's design: - -```{r bulletchart, fig.width=6,fig.height=5, echo=TRUE} -library(bulletchartr) -#bullet_chart(file_name = read_example("Indicators_Targets_ext.xlsx")) -``` - -The single black bar represents the current value of the indicator while the different hue columns represent last week's value (darker hue) and last year's value (lighter hue). The bar for each Indicator show the progression along the horizontal-axis presenting the percentage of the yearly target completed. This axis also shows the percent of the year gone by with the vertical line indicating what exact percentage "Today" is, along this percentage. - - -## Time-constraint bullet chart - -```{r bulletchart-time, fig.width=6,fig.height=5, echo=TRUE} -bullet_chart_wide(file_name = read_example("Indicators_Targets_ext.xlsx")) -``` - -As you can see, the bars show the progression along the horizontal-axis presenting the percentage of the yearly target completed. Also, along this axis is the percent of the year gone by with a vertical line indicating what exact percentage __"Today"__ is along this percentage. It is necessary to use percentages as we have multiple indicators of varying units/parameters for each project! - -The different grey colored bars represent the values of the indicator at "Last Week" and "Last Year". The grey scaled bars can represent any qualitative ranges such as "bad - good - excellent" or "disabled - repairing - fixed", etc. In the near future we will look to expand the capabilities of this package to allow users to specify these qualitative ranges to fit their needs. - -This package, `bulletchartr` is based on visualizing M&E deliverables or "Indicators", however, it can be handy for anyone that depends on monitoring Key Performance Indicators (KPIs) or needs to track progress against different targets. - -# Resources - -* [Bullet Graph Design Specification](https://www.perceptualedge.com/articles/misc/Bullet_Graph_Design_Spec.pdf)