Добавьте метку счетчика в столбце с накоплением, используя ggplot - PullRequest
1 голос
/ 01 июля 2019

Привет всем, у меня есть технический вопрос для вас, плз.

мои данные:

Gel_J0 un_sucess      n  Freq
   <fct>  <fct>      <int> <dbl>
 1 a      sucess    107336  43.6
 2 a      unsucess  138666  56.4
 3 b      sucess      9558  46.0
 4 b      unsucess   11210  54.0
 5 c      sucess      4995  45.2
 6 c      unsucess    6060  54.8
 7 d      sucess      2193  44.9
 8 d      unsucess    2687  55.1
 9 e      sucess       991  44.2
10 e      unsucess    1251  55.8

И мой график:

ggplot(data= data , aes(x= Gel_J0, y=Freq, fill=un_sucess)) +
geom_bar(stat = "identity", position = position_fill(reverse = TRUE)) +
    scale_fill_brewer(palette = "Paired", direction = -1) +
  theme_minimal()

Мой график работает очень хорошо, но я хочу добавить больше информации о нем.

Я хотел бы знать, можно ли было бы раскрыть информацию о столбце n, в котором были "freq".Либо ниже гистограммы (например, «107336/138666» над «а»), либо с обеих сторон гистограммы на графике.

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

Один из вариантов - просто использовать position = position_fill(vjust = 0.5, reverse = T) в geom_text()

library(tidyverse)
ggplot(data= df,aes(x= Gel_J0, y=Freq, fill=un_sucess)) +
  geom_bar(stat = "identity", position = position_fill(reverse = TRUE)) +
  geom_text(aes(label = n), position = position_fill(vjust = 0.5, reverse= T)) +
  scale_fill_brewer(palette = "Paired", direction = -1) +
  theme_minimal()

Таким образом, вы можете свободно размещать свои номера внутри столбцов. position_fill(vjust = 0.9, reverse= T) например, построит их выше.

enter image description here

Данные:

df <- read.table(text = "
Gel_J0 un_sucess      n  Freq
1 a      sucess    107336  43.6
2 a      unsucess  138666  56.4
3 b      sucess      9558  46.0
4 b      unsucess   11210  54.0
5 c      sucess      4995  45.2
6 c      unsucess    6060  54.8
7 d      sucess      2193  44.9
8 d      unsucess    2687  55.1
9 e      sucess       991  44.2
10 e      unsucess    1251  55.8", header = T)
1 голос
/ 01 июля 2019

Чтобы масштабировать значения n до координат графика, я вычисляю их величины относительно общего n по группам Gel_J0.

library(tidyverse)

data %>% group_by(Gel_J0) %>% mutate(p = n/sum(n)) %>%
  ggplot(aes(x = Gel_J0, y=Freq, fill=un_sucess)) +
  geom_bar(stat = "identity", position = position_fill(reverse = TRUE)) +
  scale_fill_brewer(palette = "Paired", direction = -1) +
  geom_text(aes(y = p, label = n, vjust = 2)) +
  theme_minimal()

enter image description here

...