Title: | 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). |
Authors: | Hao Wang [aut, cre] |
Maintainer: | Hao Wang <[email protected]> |
License: | Artistic-2.0 |
Version: | 0.0.3 |
Built: | 2024-12-09 09:38:20 UTC |
Source: | CRAN |
Add brackets with labeled annotations to a ggplot.
geom_bracket( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., arrow = NULL, parse = FALSE, bracket = TRUE, inherit.aes = TRUE )
geom_bracket( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., arrow = NULL, parse = FALSE, bracket = TRUE, inherit.aes = TRUE )
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 |
LayerInstance
, a layer that can be added to a ggplot.
required: xmin
, xmax
, ymin
, ymax
, label
optional: angle
, alpha
, hjust
, vjust
, colour
, family
, fontsize
, fontface
, linetype
, linewidth
, lineheight
HMU-WH
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")))
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 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.
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 )
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 )
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 |
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).
LayerInstance
, a layer that can be added to a ggplot.
required: x
, y
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.
HMU-WH
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)
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)