stable R-CMD-check Codecov test

This package is built by the NHS-R community to provide tools for drawing statistical process control (SPC) charts. This package supports the NHSE/I programme ‘Making Data Count’, and allows users to draw XmR charts, use change points, and apply rules with summary indicators for when rules are breached.

Please be aware that this package is in the early stages of development, and features may change.


As the package develops there will be a full release to CRAN if possible, but until that time you can install from GitHub using the {remotes} package with:

# install.packages("remotes")
remotes::install_github("", build_vignettes = TRUE)


Welcome to the NHS-R community’s package for building a specific type of statistical process control (SPC) chart, the XmR chart. We are aiming to support the NHS England and NHS Improvement’s ‘Making Data Count’ programme, please see here for more details. The programme encourages boards, managers, and analyst teams to present data in ways that show change over time, and drive better understanding of indicators than ‘RAG’ (red, amber, green) rated board reports often present.

The help-files, and vignette within this package tell you more about the possible options for controlling the charts, but below is a simple example of the type of chart the package produces. We will use the ae_attendances dataset from the {NHSRdatasets} package and a bit of {dplyr} code to select some organisations.


sub_set <- ae_attendances %>% 
  filter(org_code == "RQM", type == 1, period < as.Date("2018-04-01"))

sub_set %>%
  ptd_spc(value_field = breaches, date_field = period, improvement_direction = "decrease")

This plot is ok on it’s own, but we can specify more control options when we pass it on, using the {dplyr} pipe function below: %>% to the plot argument.

sub_set %>%
  ptd_spc(value_field = breaches, date_field = period, improvement_direction = "decrease") %>% 
  plot(y_axis_label = "4-hour wait breaches",
       main_title = "SPC of A&E waiting time breaches for RQM")

or, equivalently:

sub_set %>%
  ptd_spc(value_field = breaches, date_field = period, improvement_direction = "decrease") %>% 
  ptd_create_ggplot(y_axis_label = "4-hour wait breaches",
                    main_title = "SPC of A&E waiting time breaches for RQM")

Getting help:

To find out more about the ptd_spc() function, you can view the help with:


Details on the extra plot controls can be found using:


To view the vignette (worked example), use:

vignette("intro", package = "NHSRplotthedots")

vignette(package = "NHSRplotthedots")


This is an NHS-R Community project that is open for anyone to contribute to in any way that they are able. If you want to learn more about this please join the discussion at the NHS-R Community Slack group and the specific channel #proj-shiny-spc.

Try the NHSRplotthedots package in your browser

Any scripts or data that you put into this service are public.

NHSRplotthedots documentation built on Nov. 4, 2021, 1:07 a.m.