| Title: | Mean Comparison in 'ggplot2' | 
| Version: | 0.0.5 | 
| Description: | Add mean comparison annotations to a 'ggplot'. This package provides an easy way to indicate if two or more groups are significantly different in a 'ggplot'. Usually you do not need to specify the test method, you only need to tell stat_compare() whether you want to perform a parametric test or a nonparametric test, and stat_compare() will automatically choose the appropriate test method based on your data. For comparisons between two groups, the p-value is calculated by t-test (parametric) or Wilcoxon rank sum test (nonparametric). For comparisons among more than two groups, the p-value is calculated by One-way ANOVA (parametric) or Kruskal-Wallis test (nonparametric). | 
| License: | Artistic-2.0 | 
| URL: | https://hmu-wh.github.io/ggcompare/, https://github.com/HMU-WH/ggcompare/ | 
| BugReports: | https://github.com/HMU-WH/ggcompare/issues/ | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| Depends: | R (≥ 4.1) | 
| Imports: | ggplot2 | 
| NeedsCompilation: | no | 
| Packaged: | 2025-09-24 12:28:36 UTC; 22835 | 
| Author: | Hao Wang | 
| Maintainer: | Hao Wang <wanghao8772@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-09-24 12:40:02 UTC | 
ggcompare: Mean Comparison in 'ggplot2'
Description
 
Add mean comparison annotations to a 'ggplot'. This package provides an easy way to indicate if two or more groups are significantly different in a 'ggplot'. Usually you do not need to specify the test method, you only need to tell stat_compare() whether you want to perform a parametric test or a nonparametric test, and stat_compare() will automatically choose the appropriate test method based on your data. For comparisons between two groups, the p-value is calculated by t-test (parametric) or Wilcoxon rank sum test (nonparametric). For comparisons among more than two groups, the p-value is calculated by One-way ANOVA (parametric) or Kruskal-Wallis test (nonparametric).
Author(s)
Maintainer: Hao Wang wanghao8772@gmail.com (ORCID)
See Also
Useful links:
- Report bugs at https://github.com/HMU-WH/ggcompare/issues/ 
Add Brackets with Labels to a ggplot
Description
Add brackets with labeled annotations to a ggplot.
Usage
geom_bracket(
  mapping = NULL,
  data = NULL,
  stat = "identity",
  position = "identity",
  ...,
  arrow = NULL,
  parse = FALSE,
  bracket = TRUE,
  inherit.aes = TRUE
)
Arguments
| mapping | Set of aesthetic mappings created by  | 
| data | The data to be displayed in this layer. There are three options: If  A  A  | 
| stat | The statistical transformation to use on the data for this layer.
When using a  
 | 
| position | A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The  
 | 
| ... | additional arguments passed on to layer(). | 
| arrow | 
 | 
| parse | 
 | 
| bracket | 
 | 
| inherit.aes | If  | 
Value
LayerInstance, a layer that can be added to a ggplot.
Aesthetics
- required: - xmin,- xmax,- ymin,- ymax,- label
- optional: - angle,- alpha,- hjust,- vjust,- colour,- family,- fontsize,- fontface,- linetype,- linewidth,- lineheight
Author(s)
HMU-WH
Examples
library(ggplot2)
ggplot(mpg, aes(class, displ)) +
  geom_boxplot() +
  annotate("bracket", xmin = 2, xmax = 4, ymin = 4.5, ymax = 5, label = "label",
           arrow = grid::arrow(type = "closed", length = unit(0.1, "inches")))
Add Mean Comparison for Groups to a ggplot
Description
Add group mean comparisons to a ggplot. The comparisons can be performed using the t-test, Wilcoxon rank-sum test, one-way ANOVA, or Kruskal-Wallis test.
Usage
stat_compare(
  mapping = NULL,
  data = NULL,
  position = "identity",
  ...,
  nudge = 0,
  start = NULL,
  breaks = NULL,
  labels = NULL,
  cutoff = NULL,
  method = NULL,
  ref_group = NULL,
  tip_length = 0.02,
  parametric = FALSE,
  correction = "none",
  panel_indep = FALSE,
  method_args = NULL,
  comparisons = NULL,
  step_increase = 0.1,
  inherit.aes = TRUE
)
Arguments
| mapping | Set of aesthetic mappings created by  | 
| data | The data to be displayed in this layer. There are three options: If  A  A  | 
| position | A position adjustment to use on the data for this layer. This
can be used in various ways, including to prevent overplotting and
improving the display. The  
 | 
| ... | additional arguments passed on to  | 
| nudge | 
 | 
| start | 
 | 
| breaks | 
 | 
| labels | 
 | 
| cutoff | 
 | 
| method | 
 | 
| ref_group | 
 | 
| tip_length | 
 | 
| parametric | 
 | 
| correction | 
 | 
| panel_indep | 
 | 
| method_args | 
 | 
| comparisons | 
 | 
| step_increase | 
 | 
| inherit.aes | If  | 
Details
Usually you do not need to specify the test method, you only need to tell stat_compare() whether you want to perform a parametric test or a nonparametric test, and stat_compare() will automatically choose the appropriate test method based on your data.
For comparisons between two groups, the p-value is calculated by t-test (parametric) or Wilcoxon rank sum test (nonparametric). For comparisons among more than two groups, the p-value is calculated by One-way ANOVA (parametric) or Kruskal-Wallis test (nonparametric).
Value
LayerInstance, a layer that can be added to a ggplot.
Aesthetics
- required: - x,- y
Computed variables
-  p: p-value of the test.
-  q: adjusted p-value of the test.
-  label: the label of the bracket.
-  method: the method name of the test.
-  xmin,xmax,ymin,ymax: the position of the bracket.
Author(s)
HMU-WH
Examples
library(ggplot2)
p <- ggplot(mpg, aes(class, displ, color = class)) +
  geom_boxplot(show.legend = FALSE) +
  theme_test()
# Global comparison: Each x has only one group.
p + stat_compare()
# If you just want to display text, you can set parameters "bracket" to FALSE.
p + stat_compare(bracket = FALSE)
# If you want to display the test method, you can do this.
p + stat_compare(aes(label = after_stat(sprintf("%s: %s", method, label))))
# Comparison between two groups: specify a reference group.
p + stat_compare(ref_group = "minivan")
# If you only want to display the p-value less or equal to 0.01, you can do this.
p + stat_compare(ref_group = "minivan", cutoff = 0.01)
# If you want to display the significance level, you can do this.
p + stat_compare(ref_group = "minivan", breaks = c(0, 0.001, 0.01, 0.05, 1))
# Comparison between two groups: specify the comparison group.
p + stat_compare(tip_length = 0.05,
                 step_increase = 0,
                 comparisons = list(c("compact", "midsize"), c("pickup", "suv")),
                 arrow = grid::arrow(type = "closed", length = unit(0.1, "inches")))
                 # Yeah, this supports adding arrows.
# Within-group (grouped by the x-axis) population comparison.
ggplot(mpg, aes(drv, displ, fill = class)) +
  geom_boxplot() +
  stat_compare() +
  stat_compare(aes(group = drv), nudge = 0.1, color = "gray") + # add global comparison
  theme_test()
# Better adaptation to faceting.
ggplot(mpg, aes(drv, displ)) +
  geom_boxplot() +
  stat_compare(comparisons = combn(unique(mpg$drv), 2, simplify = FALSE)) +
  facet_grid(cols = vars(class), scales = "free") +
  theme_test()
# P-value correction
p <- ggplot(mpg, aes(class, displ)) +
  geom_boxplot() +
  facet_grid(cols = vars(cyl), scales = "free") +
  theme_test()
# Layer-level P-value correction
p + stat_compare(ref_group = 1, correction = "fdr")
# Panel-level P-value correction
p + stat_compare(ref_group = 1, correction = "fdr", panel_indep = TRUE)