добавить текст расчета в каждый аспект в R с помощью ggplot2? - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно добавить операцию (деление) в правом углу вверху каждого фасета. Мне нужно разделить значение z на значение x для A, B, C. для A результат операции - 0,17 (400/2300), для B - 0,1363 (30/200), а для C - 0,10 (2/19)

Я собирался использовать аннотацию, но прочитал чтобы лучше использовать geom_text при использовании фасета

         dt<-data.frame(va=c(rep("A",3),rep("B",3), rep("C",3))
                         ,vb=c(rep(letters[24:26],3))
                         ,value=c(23*100,13*100,4*100,22*10,12*10,3*10,19,8,2))

    ggplot(data=dt, aes(x=vb,y=value)) +
    geom_col(stat="identity",position="dodge")+
    facet_wrap(~va,scales="free_y")+
    geom_text(aes(label=value))

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете создать новый фрейм данных, в котором вы вычисляете результат, который хотите отобразить, а также положение x, y. Затем вы можете изменить фрейм данных, используемый слоем geom_text, с аргументом data.

dt_calc <- dt %>%
  pivot_wider(va, vb) %>%
  mutate(result = z / x, xpos = "z", ypos = pmax(x, y, z))

ggplot(data = dt, aes(x = vb, y = value)) +
  geom_col(position = "dodge") +
  facet_wrap( ~ va, scales = "free_y") +
  geom_text(aes(x = xpos, y = ypos, label = round(result, 2)), data = dt_calc)

Вывод:

graph

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...