Как применить метку geom к последней точке данных значения - PullRequest
0 голосов
/ 20 марта 2020

Я хочу применить метку geom только к последней точке данных значения каждого ser ie. Это моя база данных:

Это мой код:

paises <- c("Peru", "Brazil", "Colombia", "Ecuador", "Chile", "Argentina", "Uruguay", "Paraguay", "Bolivia")

data <- jhu_sitrep_import(source = "confirmed") %>%
  jhu_sitrep_cleandb() %>%
  filter(country_region %in% paises) %>%
  filter(value>0) %>%
  group_by(country_region) %>%
  mutate(start = first(dates),
         d_start = dates-start,
         per = ifelse(country_region =="Peru","Per","Otros"),
         max_cases = max(value)) %>%
  filter(max_cases>30)

data %>%
  filter(per =="Otros") %>%
  ggplot(aes(x = d_start, y = value, group=country_region)) +
  geom_line(aes(col = country_region)) +
  geom_point(aes(col = country_region, shape = country_region)) +
  geom_line(dat = data %>% filter(per=="Per"), col = "red") +
  geom_label(aes(y = value, label =value), vjust = 0.5) +
  geom_label(aes(y = value, label =value ), vjust = -0.5) +
  geom_point(dat = data %>% filter(per=="Per"), col = "red") +
  geom_text(data = data %>% slice(n()) %>% filter(country_region!="Peru"),
            aes(y = value, label = country_region, col = country_region), vjust=-.5) +
  geom_text(data = data %>% slice(n()) %>% filter(country_region=="Peru"),
            aes(y = value, label = country_region), col = "red", vjust=-.5) +
  scale_fill_discrete_qualitative(palette="Pastel 1", nmax = 14, order = 5:14) +
  labs(color = "Paises", x = "Días desde primer caso", y = "Numero de casos", shape = "Paises") +
  scale_y_log10() + 
  theme(legend.position = "bottom")

Так что с моим кодом я получаю значение для каждой точки данных значения. Я просто хочу метку для последнего значения.

Это мой сюжет enter image description here

Ответы [ 2 ]

3 голосов
/ 20 марта 2020

Вы хотели бы отфильтровать / установить подмножество ваших данных только до последней точки и передать их в geom_label(), используя аргумент data.

Я включил представительство (воспроизводимый пример) ниже.

library(tidyverse)

cars <- rownames_to_column(mtcars, var = "model")

ggplot(cars, aes(x = mpg, y = disp)) +
  geom_point() +
  geom_label(data = filter(cars, model == last(model)), aes(label = model))

Создано в 2020-03-20 пакетом Представить (v0.3.0)

1 голос
/ 23 марта 2020

Вы также можете создать новый столбец метки, используя ifelse, сохраняя значение только для последнего значения, а остальные как NA. А затем используйте этот столбец в качестве метки aestheti c в geom_label

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