NEWS for the Gmisc package
- Added
vertical_axisandhorizontal_axisconnector types for flowcharts. These opt-in connectors preserve the source box's x- or y-axis and project it onto the target boundary, giving true 90-degree vertical/horizontal arrows for shared wide or tall target boxes. Existingverticalandhorizontalconnector behavior is unchanged. - Added
phaseLabel()for flowchart box lists: a one-call-per-stage helper that adds a CONSORT-style phase label (e.g. Allocation, Follow-up, Analysis) centred between a stage's arms, sitting slightly above it and drawn on top. The label width adapts to the stage — spanning the central gap (plus a small corner overlap) for two arms, or the full stage width as a banner for three or more arms — and can be set explicitly viawidth. It correctly handles nested arm lists (arms that are themselves lists of boxes) by resolving their merged bounding box. - Added
on_toptoinsert()for flowchart box lists. A box inserted withinsert(..., on_top = TRUE)is drawn on top of the other boxes and connections, regardless of its position in the list, and the marker is preserved through subsequentmove()/align()operations. This is the lower-level overlay mechanism thatphaseLabel()builds on. insert()now resolves grouped (list) neighbours via their merged bounding box, so a box can be inserted between grouped stages without error.- Added a CONSORT phase-label example to the grid-based flowchart vignette showing
phaseLabel()centred between randomisation arms. - Updated flowchart examples to emphasize the
flowchart()+ pipe (|>) style API ininst/examples/connectGrob_example.R,inst/examples/spreadBox_ex.R, andinst/examples/alignBox_ex.R. - Clarified spread/connect documentation to state that spread/align return updated objects (no in-place mutation) and that connectors should use the returned boxes.
- Improved interactive example ergonomics by pausing between graph pages in multi-plot examples.
- Added
box_fn_argsparameter toboxGrob()for passing extra arguments directly to the box drawing function. The default is nowlist(r = unit(5, "pt")), giving every box a fixed 5 pt corner radius (approximately equivalent to the widely-used 5 px CSSborder-radius) regardless of box size — solving the issue where larger boxes had visibly rounder corners than smaller ones. Override per box or globally viaoptions(boxGrobFnArgs = list(...)). - Added
equalizeHeights()for flowchart box lists, mirroring the existingequalizeWidths(). It sets selected boxes to a shared height (defaulting to the tallest among the selection) and supports the samesubelementpath syntax asequalizeWidths(). - Added
excludetospreadVertical()/spreadHorizontal()and the S3spread()wrapper, allowing side branches to be left out of the main spread while preserving them in the flowchart list for lateralign(),move(), andconnect()calls. - Improved
spread()span handling: explicitfrom/tospans now work naturally withmarginas an inset inside that span (for examplespread(axis = "x", from = 0, to = 0.7, margin = 0.05)spreads within the left 70% of the viewport with padding), and subelement spreads can use deferredposition()endpoints such asfrom = position("log", "top", "y"). - Added
referencestoalignVertical()/alignHorizontal()and the S3align()wrapper. Supplying two references aligns the target to their midpoint on the selected axis, useful for centering side boxes between the main boxes before and after them. - Clarified and tested
moveBox()/move()justification semantics: for absolute moves,just = "right"makesxthe right border,just = "left"makesxthe left border, and the same edge-based interpretation applies vertically for top/bottom. - Added one-to-many grouped side fan-out support to the S3
connect()API forconnect("source", "group", type = "side"). The shared fan-out bus now honorsside_route = "outside"andside_offsetbefore branching to the destination boxes, which keeps side-branch arrows away from the source box edge. - Added many-to-one grouped side fan-in to the S3
connect()API forconnect(list("a", "b"), "target", type = "side"). The shared return bus now honorsside/end_sideandside_route/side_offset, routing to the requested outer side instead of letting each line independently pick the closest side of the target. - Fixed one-to-one
connect(..., type = "side")connectors so they honorside_route/side_offset. The vertical segment now steps out from the source box edge by the offset (matching the grouped fan-in/fan-out behavior); previously the offset was ignored and the line hugged the box edge. Useside_route = "edge"to keep the old edge-hugging route. - Extended connector labels to grouped side fan-out connectors.
labelcan now be used directly on a groupedtype = "side"fan-out; the label is centered on the offset bus, drawn on the outgoing line, and uses a semi-transparent white background by default so the line remains visually legible. - Added and expanded alternate flowchart shape examples using
boxEllipseGrob(),boxDatabaseGrob(),boxDocumentGrob(),boxDocumentsGrob(),boxDiamondGrob(), andboxTapeGrob()together withspread()/align()positioning. - Improved alternate shape helpers so non-rectangular shapes add appropriate text padding and expose visible bounds for connector anchoring. This keeps labels inside ellipse/database/document/tape shapes and lets connectors hit the visible shape edge instead of the surrounding viewport, and
fan_in_toptrunks now terminate exactly on the target's top edge. - Added
position()with relative moves. - Added dotted arrows lines for flowcharts
- Added regex selector for box lists
- Added
equalizeWidths()for flowchart box lists, allowing selected boxes (including nestedsubelementpaths and list-of-boxes targets) to share a common width while preserving center positions. - Added
txt_paddingtoboxGrob()and support for a global default viaoptions(boxGrobTxtPadding = ...). - Expanded the flowchart vignette with a grouped CONSORT-style example showing both global box text padding and width equalization across grouped levels.
- Added tests for the new behavior in
tests/testthat/test-equalizeWidths.Randtests/testthat/test-boxGrob-padding-option.R. - Updated package documentation pages generated from roxygen to include the new API and refreshed examples.
- Added
boxHeaderGrob()for creating flowchart boxes with centered header text and left-justified body text (e.g., bullet points). Fully compatible with all Gmisc flowchart helpers (coords(),distance(),connectGrob(),spreadVertical(),alignHorizontal(), etc.). - Added deep-path support for
subelementandreferenceinalignVertical,alignHorizontal,spreadVertical,spreadHorizontal, andmoveBox, allowing nested paths (e.g.c("detail", 1)) and multiple targets (e.g.list(c(...), c(...))). - Added helpers
get_list_element_by_path()andset_list_element_by_path()to support nested selection and assignment. - Updated examples (
inst/examples/alignBox_ex.R,inst/examples/spreadBox_ex.R) and added tests (tests/testthat/test-align-deep-path.R,tests/testthat/test-spread-move-deep-path.R,tests/testthat/test-align-subelement-deep.R) covering deep-path selection and informative error messages. - Fixed
subelementresolution when a list of boxes is piped intoalignHorizontal()oralignVertical()while providing a namedreferenceargument; the piped list is now unwrapped so nested targets (e.g.,c("step_1", "non-surgical")) are correctly found and aligned. - Fixed many-to-one connectors (N, fan_in_center, fan_in_top) to handle container-like inputs by automatically targeting the first box within a group.
- Added support for lists of boxes in
prConvert2Coords, allowing for merged bounding box calculations innpcunits. - Extended
moveBoxto support moving lists of boxes (groups) as a single unit, with improved name preservation. - Added
subelementparameter tospreadVertical,spreadHorizontal,alignVertical, andalignHorizontalfor targeting specific elements within a list of boxes. - Added box label connector
- Improved connecting lines between boxes
- Added a .margin and a more flexble .to/.from management for the box spreading
- Improved connecting boxes
- Update for new CRAN policy
- Improved cpp code for bezier arrows
- Fixed bug in getSvdMostInfluential with bad names appearing in graph due to bad reference, thanks Felipe (see issue #66)
- Fixed
pathJoinfor vector inputs - Added
difftimeas numeric togetDescriptionStatsBy
- BREAKING: The input parameters have changed for
getDescriptionStatsByand dropped old deprecated parameter conversion:show_missing_digits->show_missing.digitsshow_missing->useNAsig.limit->statistics.sig_limtwo_dec.limit->statistics.two_dec_lim
- Fixed bug in
getDescriptionStatsBywhen providing a character input - Made
getDescriptionStatsByS3 aware withtidyselectpattern for generating tables. - The
yamlDumpcan now take a character string and assume that is a json that needs conversion - Added
set_column_labelsandset_column_unitsfor usingdplyrsyntax forHmisc::labelandHmisc::unitsoperations. - The units column in
getDescrptionStatsBycan now have a custom name (also changed default name to "Units") - Changed addBoxClr to addBoxStyle for Transition-class (minor breaking change)
getSvdMostInfluentialnow returns the data needed for plotting- added fontsize dependent padding to
boxGrob
- Minor RCPP changes
- Minor CRAN check fixes
- BREAKING: The
mergeListmerges vectors into vectors instead of assuming that they should be bound as a matrix
- Fix for adjustment in box justification, thanks Carl Suster
- Fix for incorrect
boxPropGrobheight calculation, bad handling of missing arguments and ignored gpar arguments (issue #46) - Slightly changed color scheme for
boxGrobs - Added
moveBoxfor movingboxGrobobjects - Added
alignVerticalandalignHorizontalfor aligningboxGrobobjects - Added
spreadVertivalandspreadHorizontalfor spreadingboxGrobobjects over theviewport - Styling of
htmlTableremoved due to the 2.0 api change, nbow. the css.rgroup should be set using sethtmlTable::setHtmlTableThemeor by passing the output throughhtmlTable::addHtmlTableStyle. - The boxes now accept language input, thanks Carl Suster
- Added
yamlDumpfor quick object review - Added
pathJoinfor joining paths without worrying about trailing '/' - Added
time2spanTxtfor printing time span descriptor
- Fixed new handling of data.frame
stringsAsFactorsin next R release
- Added id as a parameter to the
Transition-class - Fixed bad no. of
popViewport()not adequately leaving the transitionClass viewport tree - Fixed bad
viewportnaming inTransition-class that was creating a conflict with multiple plots
- Fixed cran requirement where
class(x) != class(y)could be of length > 1
- Added
digits.nonzerofor allowing values with extra digits where values are close to 0 - Changed
sprintftotxtRoundfor many of the descriptors - Fixed vignette names for CRAN
- Fixed bug in
retrieve
- Expressions are now allowed in
boxGrob(Thanks Alan Haynes) - Added lodash similar functions
retrieveandhas
- Removed changed constant for STRICT_R_HEADERS compliance
- Fixed minor issue related to new CPP error
- Removed test for CRAN compliance
- Changed abs to fabs in
bezierArrowFn's c++ code
- Added skip_shadows to
Transition-class
- Fixes non-existing values in different by-groups (issue #24)
- Added box functions between and coords
- Added more
Transitionoptions for arrows - Added default options for
Transition,boxGrobandboxGrobProp
- Fixed merge with master external
descGetMissing(Thanks Peter)
- Added grid grobs for creating boxes and connecting these with lines
- Added checkmate for argument checking
- Fixed bug when providing
getDescriptionStatsBywith custom function - Added ability add alternative column instead of the p-value column
- Fixed use_unit issue #16
- Fixed bug in vignette
- Added R-version dependency
- The
Transition-class can now handle non-square matrix input - The total column is now also passed through the
txtIntfunction - Fixed header_count bug in
getDescriptionStatsBy- thanks rvlevitin (iss#13)
- Fixed the naming of proportions in
getDescriptionStatsBy - If a variable has units set it can now be added into the row name in
getDescriptionStatsBy - Merged with the Grmd-package allowing direct access to the docx_document()
- Prepared for stricter requirements for R 3.3
- Created the
Transitionclass that can handle multiple transitions in contrast totransitionPlot - The
bezierArrowGradienthas a simpler handling of the gradient proportion - The bezier arrows have been rewritten with a > 20x speed increase
- The
getDescriptionStatsByfunction is now accompanied bymergeDescthat takes care of merging everything into one table - Added ability to customize statistics for
getDescriptionStatsBy transitionPlot: The color_bar_labels are now automatically extracted from the transition_flow inputtransitionPlot: Fixed bug so that the end viewport is the roottransitionPlot: Fixed grid arrow bugtransitionPlot: When using 3D matrices and two colors there should only be a colorbar when used with gradient arrowstransitionPlot: If line width is smaller than the minimum width it is now set to 0
htmlTableand some of the formatters have now moved to the htmlTable packageforestplot2has now moved to the forestplot package- added the
mergeDescin order to merge lists fromgetDescriptionStatsByfor - All functions default to
html = TRUEinstead ofFALSE show_missingis nowuseNAin order to match thetable()call handling of missing- Fixed a few bugs
- Applied the DRY-documentation principle
- Added an interactive() check before using the viewer
- Minor adjustments to the
htmlTablehandling of no-blank spaces ( ) htmlTablenow remember the ... argument and passes it on to the print.htmlTable() and cat()- Added figCapNo and associated caption function for numbering figure captions
- Improved documentation
- Improved the
htmlTableviewer handling (thanks Adam Smith)
- Changed the getDescriptionsBy example to work with the
htmlTable() instead of the Hmisc::latex() - Fixed getDescriptionsBy bug - the Total column failed when specified to be last - thanks Alexandre Vivot
- Added example for side-by side plotting for
forestplot2 - As of 0.98.932 the knitr package isn't loaded, instead the metadata or device options indicates that it is knitting
htmlTablebug: The function can now handle matrices without column nameshtmlTablebug: The function deletes and warns when n.rgroup/n.cgroup < 1
- Bug fix for alt_col not respecting missing rgroup - added also a simple matrix output test
- Added visual tests for
htmlTableand moved one of the examples there - Added tableCSSclass option for
htmlTable- thanks jphiplip
- Changed versioning to a 3-digit system as suggested by Yihui Xie http://yihui.name/en/2013/06/r-package-versioning/
- Added alt_col for coloring the rows of the
htmlTablergroups - thanks raredd
- Roxygen2 v 4.0.0 upgrade + other doc upgrades
- Percentages are now default without space between the number and the %-sign in order to better comply with English language standards
transitionPlot- fixed arrow size and empty boxes- outputInt now defaults to the ',' formatting according to the English language. It also has no-breaking space if html option is set. It can also handle complex vector/matrix input.
- describeMean now allows for custom plus minus sign
- describe* now use the outputInt with the default english settings
- Minor fix for the print.
htmlTable
- bezierArrowSmplGradient changed name to just
bezierArrowGradient - Added visual tests and debugged the
bezierArrowGradient/transitionPlots - Externalized all internal functions of the transitionplot
- Added proportions for the transitionplot
- Managed thanks to Baptiste Auguié help on Stack Overflow I know now how to
calculate the height of axisGrobs - useful both in the
forestplot2and thetransitionPlotfunctions - Fixed the adjustment of the xlabel, the lineheight argument, the viewports for
the
forestplot2function - Simplified the
transitionPlotdefaults - Fixed a gradient bug in
bezierArrowGradient
- Added the viewer for
htmlTableallowing for direct visualisation in RStudio of the tables. Outside RStudio the utils::browseURL is used. htmlTableadded table spanner functionality, some man-page update, removed the default NULL arguments in favor of the missing() funciton, and a few minor bugfixes.
- The bezierArrowSmpl now uses "mm" internally instead of the default "npc" - this improves the rendering as the "npc" is dependent on the axis. A few adjustments to arrow functions were also added.
- Bugfixes for the bezierArrowSmplGradient.
- Bugfixed missing data for getDescriptionStats and generated a test-file in order to check most combinations that they work
- Fixed the legend-bug for
forestplot2when using points
- Added legend markers option for the
forestplot2function
- Fixed ticks for
forestplot2- the prFpGetGraphTicksAndClips used the exp() for regular values. - Cleaned up some of the code for the fpDrawXXXCI functions
- Changed depends and imports for the package
- For LibreOffice compatibility
htmlTablenow includes caption inside the table when compatibility='LibreOffice' - Split the package to exclude regression functions, these are now in the Greg package
- Added title and label options to
transitionPlot - Added a size-autofit for the
transitionPlottext
htmlTablecaused too large colspans when cgroup was set
- Bugfixes for printC&A and getDesc.
- Added a pvalueFormatter
- Fixed Intercept bug for get/printCrudeAndAdjusted - didn't include the intercept term
- Added to
forestplot2ability create customly drawn confidence intervals/boxes - Generated diamond, circle and point custom draw functions for
forestplot2 - Added
forestplot2compatibility for the summary - Minor bugfixes behind the scenes
- Fixed issue with getCrudeAndAdjustedModelData mixing up rows for rms objects
- Added tfoot option to the
htmlTablefunction - Switched to the proper caption-align for
htmlTable - Added options for
htmlTable() where you now can format the table counter text and change to Arabic numerals. - Bug: changed just to align for printCrudeAndAdjustedModel()
- Switched the order in the multi-line forestplot for the legend
- Bugfix for getTics so that it can handle small spans < .5
- Bugfix for
forestplot2with headers
- Added title for
forestplot2 - Fixed the margins for
forestplot2
- Added more legend border and fill options to the
forestplot2 - Added the legend.title option in the
forestplot2 - Fixed the auto-sizing of the area for the
forestplot2 - Rows/elements with NA are now not included in the zero-line as they are considered to be headers
- Added more legend options to the
forestplot2 - Minor changes to simleRmsAnova
- Added some debugging info for the
getDescriptionStatsBywith more detailed errors when unit/total columns don't match
- Externalized many of the
forestplot2functions and added the option of having a set line height - Added new_page option for grid-based plots
- Updated the simpleRmsAnova function
- Removed the plot.new() from transitionplot, this is in order to allow splitting plots, adding it to a viewport etc.
- Added the lineheight option for
forestplot2 - Fixed the R CMD Check --as-cran to run without any objections
- Updated dependencies
- Fixed rownames in printCrudeAndAdjusted
- Changed printCrudeAndAdjusted to return a matrix subclass instead of immediately printing
- Ran through som Pkg-check and hopefully cleared out some bugs
- getCrudeAndAdjusted is now an S3 method that has a default method and a method for rms objects. The rms relies on rms:::summaryrms and returns a matrix that is pruned and used for the situation.
- printCrudeAndAdjusted has externalized a lot of its functions and handling of the new rms getCrudeAndAdjusted output
- printCrudeAndAdjusted now ignores any interaction variables
forestplot2fix so that it properly handles data.frames as arguments- printCrudeAndAdjustedModel has a better handling of the groups argument
- Improved import to importFrom
- The
forestplot2is updated - the widths are now relative to the window size, there is a margin option, and many of the inside functions have moved to helpers outside. Also fixed the alignment of the summary label to work better. - Fixed a minor bug for cgroup without rowlabels
- Added default_ref for both
getDescriptionStatsByand describeProp function. - The percentage sign in
getDescriptionStatsBy, describProp and describeFactors is now optional. - A minor bug fix for cgroup.just for the
htmlTablefunction
- Minor fix to rownames in
htmlTable... again. - Had to remove the "terms" option from the plotHR rms:::cph() alternative as it did caused an error ** The error seems to stem from predictrms() where the Adjto function deletes the adjto output in: ** adjto <- if (int.pres) ** model.matrix(Terms.ns, adjto)[, -1, drop = FALSE] ** I will have to look into it one day...
- Fixed a rowname problem for
htmlTable - Changed the rowlabel.pos to be by default at the bottom, seems more natural with multi-layered tables.
- Fixed a caption problem for
htmlTable
- bezierArrowSmpl needed a color for the arrow line as it turned black by default. The line was added to fix the anti-aliasing issue.
- Changed CSS-defaults for groups when using the function printCrudeAndAdjusted
- Minor regular expression fix for printCrudeAndAdjusted for the addref. function
- Minor fix for cgroup.just as this was affected by the previous update
- Fixed the
htmlTablecgroup.just issue - The
htmlTableis now rendering correct w3c-validated code
- Minor improvement to the
htmlTablefunction with align now accepting vectors - Added multiline cgroup alternative
- Added a robust alternative for rms ols regressions that now can use the sandwich package
- Added
mergeLists() function for merging multiple lists
- New options for plotHR
- Minor fixes to the bezier arrows
- Update for
transitionPlotto avoid overlapping background arrows
- Thank you Adam Van Iwaarden for fixing the
htmlTablealignment and a few bugs! - Bug fix for prGetModelVariables affecting model with functions as parameters
- Added poisson (link=log) to the getCrudeAndAdjusted function to ret exp() values
- Added
transitionPlotability to indicate proportions in the rectangles
- Added the bezier arrows to the transition plot
- Added a bridge option for the transition plot arrows
- Bugfix for the bezierSmplGradient
- Added the bezier arrows.
- Added lwd parameters to the
transitionPlotlines - Changed the transition matrix - the sums were not necessary as they easily can be calculated from the rowSums/colSums.
- Added the
transitionPlot
- Bugfix for
htmlTable- throws error if a one dimensional x is provided
- Bugfix for plotHR - there were issues with getting the model data
- Added option for having specific digits in printCrudeAndAdjustedModel in the model and the descriptive part
- Added the option of having descriptive data to the printCrudeAndAdjustedModel
- A completely new way to extract the model dataset
- Change the option for printCrudeAndAdjustedModel from just html to output alternatives html, latex or raw
- Altered the name of the describe_ functions to follow the camelCase style, i.e. describe_mean is now describeMean
- Added the
getSvdMostInfluentialfunction
- The simpleRmsAnovaLatex now has a better handling of the low p-values
- Fixed a minor but with printCrudeAndAdjusted with the automated reference
- Added the option of hadding a total column even in "vertical" mode
- Changed parameter names hrzl_prop.show_perc to total_col_show_perc
- Bugfix: The total column causes errors if the by contains missing values
- Fixed a few bugs to the
forestplot2