Добавление горизонтальной линии к диаграмме рассеяния в ggplot2 - PullRequest
0 голосов
/ 25 марта 2019

Исходя из этого Как добавить результаты применения функции к существующему фрейму данных?

library (tidyverse)
library (epitools)


# here's my made up data

DISEASE = c("Marco Polio","Marco Polio","Marco Polio","Marco Polio","Marco Polio",
            "Mumps","Mumps","Mumps","Mumps","Mumps",
            "Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox","Chicky Pox")
YEAR = c(2011, 2012, 2013, 2014, 2015,
         2011, 2012, 2013, 2014, 2015,
         2011, 2012, 2013, 2014, 2015)
VALUE = c(82,89,79,51,51,
          79,91,69,89,78,
          71,69,95,61,87)
AREA =c("A", "B","C")

DATA = data.frame(DISEASE, YEAR, VALUE,AREA)


DATA %>%
    mutate(POPN = case_when(
        AREA == "A" ~ 2.5,
        AREA == "B" ~ 3,
        AREA == "C" ~ 7,
        TRUE ~ 0)) %>%
    group_by(DISEASE,AREA,POPN) %>%
    count(AREA) %>%
    mutate(res = list(pois.byar(n, POPN))) %>%
    unnest()

дает мне то, что мне нужно.

Что я хотел бы сделать, так это нанести это на график рассеяния с горизонтальной линией, равной одной из рассчитанных мною скоростей. Вместо того, чтобы добавлять его вручную.

Я думал, что это может сработать

DATA%>%filter(DISEASE== "Chicky Pox")%>%
  ggplot(aes(x=AREA, y=rate)) +geom_point() +
  geom_hline(yintercept=20, linetype="dashed", color = "red")

Что это делает. Это дает мне строку в 20. Но как я мог сделать это, чтобы дать мне линию, равную значению ставки для области A (например). Таким образом, вы могли быстро увидеть, какие ставки были выше или ниже нормы A.

Снова. Извините, это просто. Но уже поздно ...

1 Ответ

1 голос
/ 25 марта 2019

Вы можете поместить несколько простых условий поднабора в aes(), что означает, что это довольно просто, если условия не слишком сложные:

DATA %>%
    filter(DISEASE== "Chicky Pox") %>%
    ggplot(aes(x=AREA, y=rate)) +
    geom_point() +
    geom_hline(aes(yintercept=rate[AREA == "A"]), 
               linetype="dashed", color = "red")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...