Title: | Mean Comparison in 'ggplot2' |
Version: | 0.0.3 |
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: | 2024-12-09 05:45:56 UTC; 22835 |
Author: | Hao Wang |
Maintainer: | Hao Wang <wanghao8772@gmail.com> |
Repository: | CRAN |
Date/Publication: | 2024-12-09 06:00:01 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)