title | editor_options | ||||
---|---|---|---|---|---|
News: changelog |
|
- Add parameter
keep.these
tostat_dens2d_labels()
,stat_dens2d_filter()
,stat_dens2d_filter_g()
,stat_dens1d_labels()
,stat_dens1d_filter()
andstat_dens1d_filter_g()
allowing forcing the inclusion of specific observations irrespective of the local density. - Update
stat_dens2d_labels()
,stat_dens2d_filter()
,stat_dens2d_filter_g()
,stat_dens1d_labels()
,stat_dens1d_filter()
andstat_dens1d_filter_g()
to allow separate control of kept observations or labels in each tail (1D) or in each quadrant (2D) of the density distribution, still using an estimate of the local density computed from the whole data set. - Add parameter
return.density
tostat_dens2d_labels()
,stat_dens2d_filter()
,stat_dens2d_filter_g()
,stat_dens1d_labels()
,stat_dens1d_filter()
andstat_dens1d_filter_g()
to request the local density estimate at the position of each observation to be returned in numeric variabledensity
and the outcome of the test in logical variablekeep
.
- Add
stat_panel_counts()
andstat_group_counts()
. - Add parameters
default.colour
andcolour.target
togeom_label_s()
,geom_text_s()
,geom_point_s()
,geom_plot()
,geom_table()
andgeom_grob()
. - Add parameters
default.alpha
andalpha.target
togeom_label_s()
,geom_text_s()
,geom_point_s()
,geom_plot()
,geom_table()
andgeom_grob()
. - Code breaking. Remove support for aesthetics
segment.colour
,segment.alpha
, andsegment.size
ingeom_label_s()
,geom_text_s()
,geom_point_s()
,geom_plot()
,geom_table()
andgeom_grob()
. (Segments are links, and not meant to inform about data values on their own.) - Add vignette "Combining repulsion and nudging" describing the plot features made possible by packages 'ggpp' (>= 0.5.0) and 'ggrepel' (>= 0.9.2) when used together.
- Add function
dark_or_light()
. - Support the new 'ggplot2' aesthetic
linewidth
ingeom_quadrant_lines()
andgeom_vhlines()
for compatibility with 'ggplot2' (>= 3.3.7). - Update
geom_text_s()
andgeom_label_s()
to support justification computed from positions, withhjust = "position"
andvjust = "position"
as new defaults. (The current, very simple, approach will be further tested and if necessary improved for the next release.) - Update
geom_text_s()
andgeom_label_s()
to enablesegment.size
aesthetic and increase its default value, and add formal parameterspoint.padding
,box.padding
andmin.segment.length
to allow adjusting the length of the segments. - Update
position_nudge_center()
for compatibility with 'ggplot2' (>= 3.3.7) and to ensure that every label gets nudged even if located exactly at the center (focus point of nudging).
Multiple grobs and grob trees sharing the same name result in only the first one being rendered. This caused problems when multiple layers created with the same geometry were added to a plot.
- Fix bug caused by grob and grob tree naming. Until unique naming is implemented, we do not assign names in cases where these potentially can interfere with rendering. This bug affected most geometries in 'ggpp'.
Based on issues raised in the GitHub repository of 'ggrepel' and the nudge functions added some time ago to package 'ggpp' it became obvious that nudging can help in achieving good repulsion outcomes without need of tailored repulsion algorithms for specific cases. Obviously developing new ggplot position functions is much easier than tweaking the repulsion algorithm. It is also clear that not being able to combine nudging with stack, jitter and dodge positions made difficult to produce some types of plots. One case is replacing a key or legend with direct labels to plot elements, which is important in plots aimed at audiences outside academia.
In one of the issues in the GitHub repository of 'ggrepel' an answer by M. Krassowski included code that provided an elegant and simple approach to implementing combined position functions without duplicating code already in 'ggplot2' by instead calling methods of the parent class. I edited this code and included it in the package.
Except for the position functions with names ending in _keep
, for
which normal counterparts exist, the keeping of the original
position can be disabled by passing kept.origin = "none"
when they are
called.
The renaming of geom_text_linked()
to geom_text_s()
is code breaking
but I am now fairly confident this shorter name is easy to remember with
s
for segment.
- Add functions
position_stack_keep()
,position_fill_keep()
,position_jitter_keep()
,position_dodge_keep()
andposition_dodge2_keep()
. - Add functions
position_stacknudge()
,position_fillnudge()
,position_jitternudge()
,position_dodgenudge()
andposition_dodge2nudge()
based on code by M. Krassowski forposition_stack_and_nudge()
. - Revise functions
position_nudge_to()
,position_nudge_center()
andposition_nudge_line()
adding support for disabling keeping of the original positions. - Add
geom_point_s()
andgeom_label_s()
and updategeom_text_s()
renamed fromgeom_text_linked()
. This is a code breaking change with respect to the previous (unstable) version. - Update
geom_plot()
,geom_table()
andgeom_grob()
to support plotting of segments when positions change, e.g., with nudging. - Update the vignette.
With 12 new and four partly rewritten functions there is quite a lot of new code in this update, so even if tested and checked, it is possible that bugs may have slipped through. Please, do report them if you encounter any.
The initial implementation and user interface of three apply
statistics first introduced in 'ggpmisc' 0.3.6 has been revised to
expand their usefulness and to make them less error-prone, while the
fourth one is now defunct. Note: The default argument for geom
instat_centroid()
is likely to change in the near future. Otherwise,
the three statistics can be considered now stable.
-
Update
stat_apply_group()
to support summary functions likequantile()
that return vectors with more than one value but shorter than the original number of observations. -
Update
stat_summary_xy()
andstat_apply_group()
to returnNA
inx
and/ory
when.fun.x
or.fun.y
are not passed an argument. This is a code breaking change with respect to the previous (unstable) version. -
Update
stat_summary_xy()
andstat_centroid()
to support functions that return a one row data frame, like those defined in 'ggplot2' to be passed as argument to parameterfun.data
ofggplot2::stat_summary()
, such asmean_se
,mean_cl_boot
, etc. -
Fix bug in
stat_centroid()
,stat_summary_xy()
andstat_apply_group()
resulting in the return of a long data frame withNA
values instead of a data frame with fewer rows. -
Remove
stat_apply_panel()
, as it was redundant. Grouping can be modified per layer when needed.
-
Update
compute_just2D()
andcompute_just()
to work with any value for theangle
aesthetic, as in the accepted version of the pull request in 'ggplot2'. -
Fix bug in
geom_table()
that would cause text left or right justified to be clipped when the text in a cell was very long (reported by dryguy). (Cell padding still needs improvement.)
This new package is the result of splitting package 'ggpmisc' into two packages: 'ggpp' containing extensions to the grammar of graphics and 'ggpmisc' containing extensions to 'ggplot2' related to plot decorations based on model fits, statistical summaries and other descriptors of the data being plotted. Package 'ggpmisc' depends on 'ggpp' with no visible changes for users. Package 'ggpp' can be loaded instead of 'ggpmisc' when only the extensions it contains are needed. Package 'gginnards' containing tools for editing ggplot objects as well as tools for inspecting them is an earlier spin-off from 'gpmisc'.
Compared to 'ggpmisc' 0.3.9, the following changes have been introduced.
New justification styles have being implemented to complement
position_nudge_center()
. They are supported in geom_text_s()
,
geom_plot()
, geom_table()
, geom_grob()
and geom_marging_grob()
.
In the current implementation all rows in data
should contain the same
hjust
or vjust
value when using the new types of justification
described here, this seems reasonable as they compute the individual
justification values from the data. All other justification values,
either numeric
or character
do not have this restriction and can be
used as in geoms from 'ggplot2'. These new features may change in the
near future.
- Rename
geom_linked_text()
intogeom_text_linked()
. - Implement justifications
"outward_mean"
,"inward_mean"
,"outward_median"
and"inward_median"
so that outward and inward are with respect to the centroid of the data instead of to the middle of the$x$ or$y$ scales. This should be useful in combination withposition_nudge_center()
. - Implement justifications
"outward_nnn"
and"inward_nnn"
so that outward and inward are with respect to the number resulting from applyingas.numeric()
to the characters that replacennn
. For example strings like"outward_0.5"
,"inward_3e5"
or"outward_-3e-2"
are supported. This should be useful when manual tweaking is desired. As special cases"outward_0"
and"inward_0"
apply justification outward and inward with respect to the origin. This should be useful for biplots used for PCA and similar cases with arrows radiating out of the origin. (The"outward"
and"inward"
justification implemented in 'ggplot2' is relative to the middle of the$x$ or$y$ scales.) - Revise
compute_npcx()
andcompute_npcy()
to support multiple steps per group (needed in 'ggpmisc'). - Fix problem related to
"outward"
and"inward"
justification of text labels whenangle
aesthetic takes values < -45 or > 45 degrees. This code change alters how old plots are rendered if text labels have been rotated by more than 45 degrees. - 'ggplot2', 'ggrepel': The problem with angle was a "bug" in
'ggplot2' also present in 'ggrepel'. A pull request for
ggplot2::geom_text()
has been submitted and merged. This is now in the 'ggplot2' 3.3.4 milestone retaining consistent behaviour between 'ggplot2', 'ggrepel', 'ggpp' and 'ggpmisc'.
- Update the documentation of
geom_plot()
. - Revise handling of rounding for
$R^2$ and$P$ -value instat_poly_eq()
. -
Under development! Link repositioned text to its original
position with a segment or arrow:
geom_linked_text()
. Except for the drawing of segments or arrows this new geometry behaves asggplot2::geom_text()
. Note: Segments and arrows are drawn only if the position function used returns both the repositioned and original coordinates. - Add support for advanced nudging:
position_nudge_centre()
andposition_nudge_line()
compute the direction of nudging and return both the nudged and original positions. - Add support for simple nudging:
position_nudge_to()
nudges to new user-supplied position(s);position_nudge_keep()
nudges to position(s) based on user-supplied position shift. These functions return both nudged and original position(s), which makes possible to draw connecting segments from text labels to the original position.
- Fix bug: suggested package not loaded in vignette Model-Based Plot Annotations resulting in "method not found" warning in some examples*.*
- CODE BREAKING: functions
stat_fit_glance()
,stat_fit_augment()
,stat_fit_tidy()
andstat_fit_tb()
now import the tidiers from package 'generics' instead of from 'broom'. As a result, users must now explicitly load the package where the methods to be used are defined, such as 'broom' or 'broom.mixed' or define them before calling these statistics. - Add formal parameter
glance.args
tostat_fit_glance()
, parametertidy.ars
tostat_fit_tidy()
andstat_fit_tb()
and parameteraugment.args
tostat_fit_augment()
as some specializations ofbroom::glance()
,broom::tidy()
andstat_fit_augment()
accept arguments specific to a given fitting method. - Fix bug:
stat_fit_tidy()
would fail withquantreg::rq()
and any other fit methods that do not return by default standard error estimates for parameter estimates (Thanks to Mark Neal for reporting the problem). - Revise
stat_fit_glance()
,stat_fit_augment()
andstat_fit_tidy()
to ensure compatibility withcor.test()
and other functions that require an object rather than a quoted expression as argument fordata
. - Add formal parameter
p.digits
tostat_fit_tb()
. - New vignette explaining how the grammar of graphics has been expanded to better support annotations.
- Fix bug:
try_tibble.ts()
andtry_data_frame()
did not handle correctly the conversion of dates for some time series, which also could affectggplot.ts()
. - Fix bug:
stat_peaks()
andstat_valleys()
generated wrong labels if aDate
object was mapped to x (the bug did not affect POSIX or datetime, and was obvious as it resulted in a shift in dates by several decades). - Move git repository from Bitbucket to Github.
- Set up Github action for CRAN-checks on Windows, OS X and Ubuntu.
- Update
stat_fit_tb()
to support renaming of terms/parameter names in the table (Suggested by Big Old Dave and Z. Lin). In addition implement selection, reordering and renaming of columns and terms/parameters using positional indexes and pattern matching of truncated names in addition to whole names. Improve formatting of small P-values. - Update
stat_fmt_tb()
to support the same expanded syntax asstat_fit_tb()
. - Add
stat_dens1d_filter()
,stat_dens1d_filter_g()
andstat_dens1d_labels()
, to complement existingstat_dens2d_filter()
,stat_dens2d_filter_g()
andstat_dens2d_labels()
. - Update
stat_dens2d_filter()
,stat_dens2d_filter_g()
andstat_dens2d_labels()
adding formal parameterskeep.sparse
andinvert.selection
, as available in the new 1D versions. - Update
stat_dens2d_labels()
to accept not only character strings but also functions as argument tolabel.fill
as the newstat_dens1d_labels()
does. - Revise documentation including the User Guide.
- Override
ggplot2::annotate()
adding support for aestheticsnpcx
andnpcy
. - Add
stat_summary_xy()
andstat_centroid()
. - Revise
stat_poly_eq()
to support labelling of equations according to group. - Implement
output.type
"markdown"
instat_poly_eq()
usable withgeom_richtext()
from package 'ggtext'.
- Add support for "table themes" to
geom_table()
andgeom_table_npc()
.
- Add support for
p.value.label
andf.value.label
tostat_poly_eq()
. - Update to track deprecations in 'ggplot2' (>= 3.3.0).
- Fix bug in
stat_poly_eq()
. - Minor revision of the User Guide and documentation.
This version implements some new features and fixes bugs in the features introduced in version 0.3.1, please do rise an issue if you notice any remaining bugs! Some reported weaknesses in the documentation have been addressed. This updated version depends on 'ggplot2' (>= 3.2.1).
-
Add support for volcano and quadrant plots of outcomes.
-
Add geometries
geom_vhlines()
andgeom_quadrant_lines()
. -
Add convenience scales
scale_x_logFC()
andscale_y_logFC()
for data expressed as fold change. -
Add convenience scales
scale_x_Pvalue()
, scale_y_Pvalue(),scale_x_FDR()
,scale_y_FDR()
. -
Add convenience scales
scale_colour_outcome()
,scale_fill_outcome()
andscale_shape_outcome()
for data expressed as ternary or binary outcomes. -
Add conversion functions
outcome2factor()
andthreshold2factor()
to convert vectors of numeric outcomes into factors with 2 or 3 levels. -
Add conversion function
xy_outcomes2factor()
andxy_thresholds2factor()
to combine two vectors of numeric outcomes into a 4-level factor. -
Improve support for model-fit annotations.
-
Update
stat_poly_eq()
so that optionally instead of text labels it can return numeric values extracted from the fit object. -
Document with examples how to pass weights and covariates to statistics based on methods from package 'broom'. Highlight the differences among
stat_poly_eq()
and thestat_fit_xxx()
statistics implemented using package 'broom'. -
Revise
stat_apply_fun()
to allow simultaneous application of functions to x and y aesthetics, and handling ofdiff()
and other functions returning slightly shorter vectors than their input. -
Support in
stat_fit_tb()
,stat_fit_augment()
,stat_fit_tidy()
andstat_fit_glance()
the use of character strings as position arguments for parameterslabel.x
andlabel.y
when using geoms based on x and y aesthetics in addition to when using those taking thenpcx
andnpcy
aesthetics.
This is a major update, with a few cases in which old code may need to be revised to work, and many cases in which there will be subtle differences in the positions of labels used as annotations. The many new features may still have some bugs, please do rise an issue if you notice one!
Version requiring 'ggplot2' (>= 3.1.0).
Add new geometries, several of them accepting x and y in npc units
through the new aesthetics npcx
and npcy
, allowing positioning
relative to plotting area irrespective of native data units and scale
limits. These geometries are useful on their own for annotations in
particular they allow consistent positioning of textual summaries. By
default they do not inherit the plot's aesthetic mappings making their
behaviour remain by default in-between that of true geometries and that
of annotate().
- Add
geom_text_npc()
andgeom_label_npc()
using aesthetics npcx and npcy. - Add
geom_table_npc()
using aesthetics npcx and npcy. - Add
geom_plot()
andgeom_plot_npc()
which can be used to add inset plots to a ggplot. - Add
geom_grob()
andgeom_grob_npc()
which can be used to add inset grobs to a ggplot. - Add
geom_x_margin_point()
,geom_y_margin_point()
,geom_x_margin_arrow()
andgeom_y_margin_arrow()
which behave similarly togeom_hline()
andgeom_vline()
but plot points or arrows instead of lines. Addgeom_x_margin_grob()
andgeom_y_margin_grob()
with similar behaviour but for adding grobs. - Revise textual-summary statistics to use the new npc version of geometries.
- This may break old code that used
geom_table()
and depended on the old default ofinherit.aes=TRUE
. - Add "summarize" statistics for groups and panels.
- Add
stat_apply_panel()
andstat_apply_group()
. - Add workaround to
stat_fit_glance()
and improve diagnosis of unsupported input. Replace bad example in the corresponding documentation (workaround for bug reported by Robert White). - Update documentation.
- Add and revise examples.
- Revise vignette.
Version requiring 'ggplot2' (>= 3.0.0), now in CRAN. Low level manipulation and debug methods and functions moved to new package 'gginnards' available through CRAN.
- Remove debug stats and geoms -> 'gginnards'.
- Remove layer manipulation functions -> 'gginnards'.
- Add support for "weight" aesthetic in
stat_poly_eq()
(fixing bug reported by S.Al-Khalidi). - Add support for column selection and renaming to
stat_fit_tb()
. - Add new statistic
stat_fmt_tb()
for formatting of tibbles for addition to plots as tables. - Rename
stat_quadrat_count()
intostat_quadrant_count()
(miss-spelling). - Revise vignette.
Non-CRAN version with additional functionality, but requiring the development version of 'ggplot2'.
- Track code breaking change in 'ggplot2' commit #2620 (2018-05-17).
Non-CRAN version with additional functionality, but requiring the development version of 'ggplot2' >= 2.2.1.9000 (>= commit of 2017-02-09) from Github. Visit
geom_table()
, a geom for adding a layer containing one or more tables to a plot panel.stat_fit_tb()
a stat that computes a tidy tabular version of the summary or ANOVA table from a model fit.
CRAN version
-
Add
stat_quadrat_count()
a stat that computes the number of observations in each quadrant of a plot panel ignoring grouping. -
Fix bugs, one of which is code breaking: the names of returned parameter estimates have changed in
stat_fit_tidy()
now pasting"_estimate"
to avoid name clashes with mapped variables.
- Revise
stat_fit_tidy()
so that it returns p-values for parameters, in addition to estimates and their standard errors. - BUG FIX: Revise
geom_debug()
adding missing default arguments. - Add functions for manipulation of layers in ggplot objects:
delete_layers()
,append_layers()
,move_layers()
,shift_layers()
,which_layers()
,extract_layers()
,num_layers()
,top_layer()
andbottom_layer()
.
Add stat_fit_tidy()
implemented using broom::tidy()
. Makes it
possible to add the fitted equation for any fitted model supported by
package 'broom', as long as the user supplies within aes()
the code to
build a label string. Update user guide.
Fix bug in stat_poly_equation()
eq.x.rhs
argument ignored when using
expressions.
- Fix bugs in
try_tibble()
andtry_data_frame()
which made them fail silently with some objects of class"ts"
in the case of numeric (decimal date) index for time. In addition lack of special handling for classes"yearmon"
and"yearqrt"
from package 'zoo', lead to erroneous date shifts by a few days. - Add methods
ggplot.ts()
andggplot.xts()
.
- Change default value for parameter
label.fill
instat_dens2d_labels()
fromNA
to""
. - Improve documentation using current 'ggrepel' version, which
implements changes that make
stat_dens2d_labels()
useful.
-
Add
stat_dens2d_labels()
, a statistic that resets label values toNA
by default, or any character string supplied as argument, in regions of a panel with high density of observations. -
Add
stat_den2d_filter()
, a statistic that filters-out/filters-in observations in regions of a panel with high density of observations. These two statistics are useful for labeling or highlighting observations in regions of a panel with low density. Both stats use a compute_panel function. -
Add
stat_den2d_filter_g()
, a statistic that filters-out/filters-in observations in regions of a group with high density of observations. This statistics is useful for highlighting observations. It uses a compute_group function. They use internallyMASS:kde2d
to estimate densities and default values for parameters are adjusted dynamically based on the number of observations.
- Add user-requested feature: allow user to specify number 'digits'
used in formatting numbers in labels in
stat_poly_eq()
. - Update
try_data_frame()
to return an object of class"tibble"
and addtry_tibble()
as synonym. - Update documentation and start using package 'staticdocs' to build a documentation web site.
- Add support for tikz in
stat_poly_eq()
. - Fix bug in
stat_poly_eq()
. - Fix bug in
geom_debug()
. - Fix bug in
stat_fit_augment()
.
-
Enhance
stat_poly_eq()
so that 1) position of labels according to npc (relative positions using normalized coordinates), as well as by named positions"top"
,"bottom"
,"right"
,"left"
and"center"
is now implemented; 2) when grouping is present, suitablevjust
values are computed to automatically position the labels for the different groups without overlap. Default label positions are now relative to the range of each panel's$x$ and$y$ scales, eliminating in most cases the need to manually tweak label positions. -
Add
stat_fit_glance()
uses package 'broom' for maximum flexibility in model function choice when wanting to add labels based on information from a model fit, at the expense of very frequently having to explicitly set aesthetics, and always having to add code to do the formatting of the values to be used in labels. Label position is as described above forstat_poly_eq()
. -
Add
stat_fit_deviations()
for highlighting residuals in plots of fitted models. This statistic currently supports onlylm()
fits. By default geom "segment" is used to highlight the deviations of the observations from a fitted model. -
Add
stat_fit_residuals()
for plotting residuals from a fitted model on their own in plots matching plots oflm
fits plotted withstat_smooth()
even with grouping or facets. This statistic currently supports onlylm()
fits. By default geom "point" is used to plot the residual from a fitted model. -
Add preliminary version of
stat_fit_augment()
, which uses package 'broom' for maximum flexibility in model function choice, to augment the data with additional columns of values derived from a model fit.
- Add support for AIC and BIC labels to
stat_poly_eq()
. - Add pretty-printing of parameter values expressed in engineering
notation in
stat_poly_eq()
. - Add support for user-supplied label coordinates in
stat_poly_eq()
. - Improve
stat_debug_panel()
andstat_debug_group()
so that they can optionally print to the console a summary of the data received as input. - Add
geom_debug()
, a geom that summarizes its data input to the console, and produces no visible graphical output.
- Add support for user-supplied lhs and for user-supplied
rhs-variable name in the equation label in
stat_poly_eq()
.
- Remove one example to remove a package dependency.
- Improve handling of time zones in
try_data_frame()
. - Revise documentation and vignette.
stat_poly_eq()
changed to include the lhs (left hand side) of the equation by default.
-
Add function
try_data_frame()
to convert R objects including time series objects of all classes accepted bytry.xts()
into data frames suitable for plotting withggplot()
. -
Update
stat_peaks()
andstat_valleys()
to work correctly when the x aesthetic uses aDate
orDatetime
continuous scale such asggplot()
sets automatically forPOSIXct
variables mapped to the x aesthetic.
- Rename
stat_debug()
asstat_debug_group()
and addstat_debug_panel()
. - Add
stat_peaks()
andstat_valleys()
(these are simpler versions ofggspectra::stat_peaks()
andggspectra::stat_valleys()
for use with any numerical data (rather than light spectra).
First version.
- Add
stat_poly_eq()
- Add
stat_debug()