Выделить конкретные точки из вектора на диаграмме рассеяния - PullRequest
0 голосов
/ 27 августа 2018

У меня есть фрейм данных df с двумя столбцами, которые отображаются на диаграмме рассеяния с использованием ggplot.Теперь я разделил кривую на интервалы.Точки сечения интервалов находятся в векторе r .Теперь я хочу выделить эти моменты, чтобы улучшить визуализацию интервалов.Я думал о раскраске этих точек интервала или даже о разделении интервалов путем добавления вертикальных линий в график ... Я пробовал некоторые команды, но они не работали для меня.Вот идея того, как выглядит мой фрейм данных: d - первый столбец, e - второй с числом экземпляров.

   d      e
   1      4
   2      4
   3      5
   4      5
   5      5
   6      4
   7      2
   8      3
   9      1
  10      3
  11      2
  12      3
  13      3
  14      3
  15      3
  16      3
  17      3
  18      4

Мой вектор r показывает, где были установлены границы интервала.

7
8
9
10
11
12
18

Есть идеи, как это сделать?Спасибо!

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете попробовать tidyverse. Идея состоит в том, чтобы найти точки перекрытия, используя «mutate and% в% , then color by the resutling logical vector гр». Я также добавил вертикальные линии для иллюстрации «интервалов».

library(tidyverse)
d %>% 
  mutate(gr=d %in% r) %>% 
  ggplot(aes(d,e, color=gr)) + 
   geom_vline(xintercept=r, alpha=.1) +
   geom_point()

Изменить: без Tidyverse вы можете добавить gr, используя

d$gr <- d$d %in% r
ggplot(d, aes(d,e, color=gr)) ...

enter image description here

Данные

d <- read.table(text="  d      e
   1      4
                2      4
                3      5
                4      5
                5      5
                6      4
                7      2
                8      3
                9      1
                10      3
                11      2
                12      3
                13      3
                14      3
                15      3
                16      3
                17      3
                18      4", header=T)
r <- c(7:12,18)
...