- Fixed a bug introduced in #124, where a hard-coded "ID" was mistakenly
replaced by a call to
pm_col_tad()rather thanpm_col_id(). (#131)
-
A new family of functions lets you update axis and aesthetic labels on plots after they are created, looking up column names in a named list or
yspecobject. (#122)pm_gg_labs()builds a label object that can be added (+) to anyggobject to update axis and aesthetic labels based on the mapped column names. It also acceptsx_break,y_break, andvar_breakarguments for inserting line breaks into long labels.pm_relabel()is a generic that appliespm_gg_labs()to aggobject, apatchworkobject (e.g., frometa_covariate()ornpde_panel()), or a list ofggobjects.pmp_relabel_wrap()relabels facet strip labels in plots produced bywrap_*functions (e.g.,wrap_eta_cont(),wrap_cont_cont()), including optionalf_breakandunit_breakarguments for wrapping long strip labels.pmp_relabel_pairs()relabels strip and axis labels in pairs plots (e.g., frometa_pairs()).relabel_at()applies relabeling to specific plots in a named list, selected by exact name or regular expression.pm_label_columns()attaches per-column labels to a data frame from a named list oryspecobject;pm_label_rm()removes them. When a data frame labeled this way is passed to awrap_*function withuse_labels = TRUE(now the default), the stored labels are used as facet strip titles.pm_gg_break()andpm_gg_break_aes()will break an established aesthetic label across two lines;pm_gg_break()identifies labels to break by variable name whilepm_gg_break_aes()identifies labels to break by aesthetic name.pm_label_break()is aggplot2labeller function that wraps facet labels at a specified character width, for use withfacet_wrap(labeller = ...).
-
A new aliasing system lets you globally redirect the canonical column names assumed by pmplots to the names actually present in your data. (#124)
pm_set_aliases()registers one or morealias = canonicalpairs (e.g.,pm_set_aliases(TAFD = TIME)redirects every place pmplots would look forTIMEtoTAFDinstead). Only columns returned bypm_show_canonical()can be aliased.pm_aliases()prints currently active aliases;pm_clear_aliases()removes them all;pm_show_canonical()lists which column names can be aliased.pm_col_id()returns the subject identifier column name (defaults to"ID"; controlled globally viaoptions(mrg.id_col = ...)).pm_col_tad()returns the time-after-dose column name with alias support. Both are now used internally wherever pmplots previously hard-coded"ID"or"TAD".
-
eta_covariate(),eta_covariate_list(),npde_covariate(),npde_covariate_list(),cwres_covariate(),cwres_covariate_list(), andcont_cat_panel()gain apointsargument that is forwarded toboxwork()when a categorical covariate column is plotted as a boxplot. (#126) -
boxwork()(and downstream functions such aspm_box(),cont_cat(), and theeta_cat()/npde_cat()families) acceptfill = NULLto suppress the default fill, leaving the returned plot open to extension withaes(fill = ...)for grouping by a third variable. (#125) -
Minimum ggplot2 version is now 3.5.2. (#122)
-
Minimum R version is now 4.1.0. (#122)
-
Fix some test failures related to ggplot2 version 4.0 (#117).
-
Add S4 as optional dependency to silence
R CMD checkwarning (#117). -
Prefer
ggplot2::is_ggplot()when available (#115). -
Update CI and make tests compatible with GGally 2.3.0 (#114).
eta_covariate()now callseta_cont()rather thaneta_cat()when data for the x-axis isinteger, fixing an error that was generated frometa_cat(), which always expectsfactor,character, orlogical; other internal updates have been made to ensure consistent treatment ofintegerdata as continuous rather than discrete (#104).
-
Multiple
xandycan be now be passed as alistin addition to character vector (#95). -
Vectorized plots (returned as a list of plots) are now named according to the
xorydata column (#96). -
New function
rot_xy()allows rotation of x- or y-axis tick labels forggobjects,patchworkobjects, or lists ofggorpatchworkobjects; this function usesrot_at()for processing lists (#96). -
New function
rot_at()allows rotation of x- or y-axis tick labels ofggorpatchworkobjects or named lists of these objects; the list method allows rotation of specific plots in the list by matching the name exactly or through a regular expression (#96). -
New function
pm_with()allows arrangement of a named list of plots usingpatchworksyntax (#96). -
rot_y()has been updated with averticalargument, similar to existing argument inrot_x()(#96).
-
y-axis for
cwres_q()andnpde_q()changed to remove the word "distribution" (#92). -
pmplots now depends on ggplot2 version 3.5.0 or greater (#86).
-
Axis titles for conditional weighted residuals are now abbreviated "CWRES" (#83).
- Fixed a bug where the wrong y-axis title was getting used in
cwres_covariate()(#89).
-
Add a series of functions for standardized, paneled displays (#77, #81).
eta_covariate()creates panel of ETA versus continuous or categorical covariates.npde_covariate()creates panel of NPDE versus continuous or categorical covariates.cwres_covariate()creates panel of CWRES versus continuous or categorical covariates.cont_cat_panel()creates panel of continuous versus categorical covariates.npde_panel()creates panel of NPDE-based diagnostics.cwres_panel()creates panel of CWRES-based diagnostics.npde_scatter()creates panel of NPDE-based scatter plots.cwres_scatter()creates panel of CWRES-based scatter plots.npde_hist_q()creates NPDE histogram and Q-Q plot in a panel.cwres_hist_q()creates CWRES histogram and Q-Q plot in a panel.- Component plots can be returned in a list which can be arranged via
with().
-
pm_grid()gainstag_levelsargument that gets passed topatchwork::plot_annotation()(#80).
- Fix bug where density line was not being drawn by default over npde and
cwres histograms; the bug came about from incomplete transition to
changes introduced in
ggplot2v3.4.0 (#74, #75).
- Update plotting code to work with new
ggplot2behavior introduced in version 3.4.0;pmplotsnow depends onggplot2version 3.4.0 or greater (#71).
-
Functions generating default axis titles now have arguments so that interpolated customizations can happen when calling the function outside of a plot context (#57).
-
dv_pred_ipred()heavily refactored for functionality and style; see the PR for significant changes / improvements (#54). -
Put stories in yaml format; add script to build validation docs from the yaml file (#58, #59).
-
pm_grid()now uses 'patchwork' to arrange plots; 'patchwork' becomes a suggested package and 'cowplot' is dropped #49. -
scatt()gainsalphaargument with default provided bypm_opts$scatter.alpha#42, #48. -
split_plot()gainslabellerargument which gets passed tofacet_wrap()#43, #47. -
label_tex()replaceslabel_parse_label()for labeling facets vialatex2exp::TeX();label_parse_label()remains as an alias #47. -
label_funargument for wrap plots is renamedlabeller; applies to the following plots:wrap_cont_cont(),wrap_hist(),wrap_cont_cat(), and any plot built on these (see?wrap_plots) #43, #47. -
Fix bug where points overlaid on boxplots were jittered in both directions; jitter is now only in x-direction #45, #46.
-
Add vignettes into package (#37)
-
Re-work README (#37)
-
pairs_plot()andeta_pairs()now will properly call user-supplied functions for creating panels on the upper and lower triangle (#2) -
The upper panels in
pairs_plot()andeta_pairs()are not customizable usingpm_opts()(#6) -
The reference lines at -3 and 3 on the y-axis of
npdeplots are no longer drawn by default (#22) -
dv_pred()anddv_ipred()gain an argument (logbr) that lets the user pick the interval for tick marks whenloglogplots are drawn; options are: "full" (full log units - 10, 100 ,1000), "half" (half log units - 30, 100, 300) or "null" (let ggplot decide); the default is now to show full log unit breaks rather than half log unit breaks (#21) -
pairs_plot()gains an argument (lower_plot) which lets the user more easily customize the scatter plot that usually appears on the lower triangle (#26) -
wrap_cont_cat()is a new wrap function that lets the user make faceted plots of continuous variables versus categorical variables; (#14)
- Add
label_funfunction topairs_plot,wrap_cont_contandwrap_histallowing strip labels to incorporate expressions viapmplots:::label_parse#45 parse_labelandlabel_parse_labelare exported- Add option system #70
- Add better control over tick label rotation and justification #60
- Optionally plot subject ID rather than points in scatter plots #63
- CWRESI plots now have default axis title "CWRES with interaction" #87
- Add dv_pred_ipred plot function #89
- Optionally overlay points on top of boxplots #13
- Refactor
col_labelso that punctuation incol//labeldoes not result in error #72
- Qualification under CR-88 and released to r_validated
- Added non-exported functions to generate default col-label information
(see
?pm_axis_functions) - Added
npde_time,npde_tadandnpde_tafd,npde_pred,npde_hist, andnpde_qfunctions - Added
res_hist,wres_hist, andcwres_histalong with the more generalcont_histfunctions for plotting residuals or other continuous variables as histograms - Vectorized
eta_cont,(cw)res_cont,eta_cat, and(cw)res_cat; see function help for more details about what this means - Added
cont_cont_listandcont_cat_listas vectorized versions ofcont_contandcont_cat - Added internal functions that facilitate the creation of vectorized plotting function calls
- Reorganized the R source files and split several composite help topics into more focused topics
- Added
pairs_plotas a more-generic front end toggpairs - Dots are now passed through
eta_pairsandpairs_plottoGGally::ggpairs; this allows users to pass in a mapping for colors etc - Added arguments for
pairs_plotto allow users to pass in custom functions forupperandlower - For the default
lowerfunction inpairs_plot, the mapping object is checked forsmooth_colorandsmooth_ltyfor more control over the smoothing line - Remove
shkargument topairs_plot - Re-configured code to handle user-supplied
xsandysinformation; axis titles respect user-suppliednamesettings for scales - Added functions to
rot_xandrot_yto rotate tick labels - Added
scalesargument todv_predanddv_ipred; by default (scales = "fixed"), the x- and y-axis have the same limits; whenscales = "free"limits are chosen by ggplot2 and will likely be different for x- and y-axis - Fixed bug in
split_plotwhen splitting by a factor that doesn't have all level present - Fixed bug in
wres_qrelated to indexing a tibble - Added functions to export look and feel:
pm_theme,pm_abline,pm_smooth,pm_hline,pm_histogram; these functions help make the plots look consistent with other plots if you are making reference lines, smooths, etc;pm_themeis still just a wrapper aroundtheme_bw() eta_pairsdispatches toeta_histwhen there is only one eta in the mix #14- A density line is by default plotted over histograms
for
cwres,wres, andnpde - Changed all plots so that axis titles are generated with
labsrather than viascale_(x|y)_continuous#23 - ggplot2 version 3.0.0 or greater is now required
col_labelspecification can now be automatically parsed to generate expressions to be rendered with plotmath; if two$symbols are found in the title, pmplots will try to load the latex2exp namespace and pass the axis title throughlatex2exp::TeX. Otherwise, if the axis title begins with!!, then pmplots will parse the column title to generate the expression- Added cowplot as a suggested package to work with
pm_grid - Fixed a bug introduced with ggplot2 version 3 when used with
eta_pairs#17 split_plotnow accepts agroupeddata frame as input; the list of plots will be generated by splitting the data frame on grouping column #32- Added faceted plots:
wrap_cont_cont,wrap_cont_time,wrap_res_time,wrap_eta_cont,wrap_hist, andwrap_dv_preds
- Fixed
logbr3so that the values are sorted; this fixes an issue where the grid lines were not properly displayed with these breaks - Fixed issue in
dv_timeanddv_predwhen modifying the x-scale and y-scale through xs and ys arguments - Changed
dv_timeanddv_predso that breaks are at half-log units whenlog = TRUEorloglog = TRUE
- Initial validated version