Переместить положение текста в ggplot - PullRequest
0 голосов
/ 14 февраля 2020

Надеюсь, довольно простая проблема для решения - я создал коробочную диаграмму, изображенную с использованием следующего кода

ggplot(minanalysis, aes(x=MinAnaType, y=Calcium)) +
  geom_boxplot() +
  geom_point(aes(colour=Ploidy)) +
  stat_summary(fun.y=mean, colour="black", geom="point", size=2,show.legend = FALSE) + 
  geom_text(data = means, vjust = -0.25, hjust=-0.3, size = 3, aes(label = round(Calcium, 2), 
                                                   y = Calcium + 0.08)) +
  #add a sample size n =
  geom_text(data = minanalysis %>% group_by(MinAnaType) %>% 
          summarize(Count = n(), 
          Calcium=max(Calcium) + 0.05 * diff(range(minanalysis$Calcium))),
          aes(label = paste0("n = ", Count)), 
          position = position_dodge(0.85), size=3, show.legend = FALSE) +
  # Add pairwise comparisons p-value and global p-value
  stat_compare_means(comparisons = my_comparisons, label = "p.signif", label.y = 9500, size = 4) + 
  stat_compare_means(label.y = 10500, size = 4)    

Я хочу, чтобы "n = 290" и n = 50 "находились под ними. Этикетки оси X 'Eviscerated' и 'WholeBody'. Слишком над ними разбросаны сами надстройки. Может кто-нибудь помочь с кодом для этого, я новичок в R studio.

Спасибо

1 Ответ

0 голосов
/ 15 февраля 2020

Возможно, проще всего добавить разрыв строки к вашим меткам x. Затем вы можете добавить свой счет, либо жестко, либо программно. (Это будет в пределах scale_x_...(labels = ...))

Например

library(tidyverse)

ggplot(filter(iris, Species %in% c('setosa','virginica')), aes(Species, Sepal.Length)) +
  geom_boxplot() +
  scale_x_discrete(labels = c(setosa = paste('setosa', '\nn = 30'), 
                              virginica = paste('virginica', '\nn = 30')))
...