R boxplot, изменить количество цифр в значении p, используя "stat_compare_means" - PullRequest
2 голосов
/ 10 мая 2019

Используя набор данных ToothGrowth (встроенный в R), я использовал следующий код:

library(ggplot2)
library(tidyverse)
library(ggpubr)
p <- ggboxplot(ToothGrowth, x = "supp", y = "len",
           color = "supp", palette = "jco",
           add = "jitter",
           facet.by = "dose", short.panel.labs = FALSE)
p + stat_compare_means(label = "p.format")

Теперь я бы хотел, чтобы значения p имели 4 цифры.Я исследовал предыдущие подобные посты, а затем попробовал следующие два варианта

p + stat_compare_means(label = "p.format", digits = 4)
p + stat_compare_means(label = "p.format", round(p.format, 4))

К сожалению, ни один из них не сработал.У кого-нибудь может быть решение?Спасибо.

1 Ответ

1 голос
/ 10 мая 2019

Вот один вариант использования sprintf

library(ggplot2)
library(tidyverse)
library(ggpubr)
p <- ggboxplot(ToothGrowth, x = "supp", y = "len",
           color = "supp", palette = "jco",
           add = "jitter",
           facet.by = "dose", short.panel.labs = FALSE)
p + stat_compare_means(aes(label = sprintf("p = %5.4f", as.numeric(..p.format..))))

enter image description here


Обновление

В ответ на ваш комментарий вы можете сделать следующее

p <- ggboxplot(ToothGrowth, x = "supp", y = "len",
           color = "supp", palette = "jco",
           add = "jitter",
           facet.by = "dose", short.panel.labs = FALSE)
p + stat_compare_means(aes(label = ifelse(
    p < 1.e-2,
    sprintf("p = %2.1e", as.numeric(..p.format..)),
    sprintf("p = %5.4f", as.numeric(..p.format..)))))

enter image description here

Здесь я печатаю p-значение, используя научную запись, если p < 1.e-2 else как число с 4 цифрами.

...