Как раскрасить определенные точки в R

#r #ggplot2

#r #ggplot2

Вопрос:

Я хочу разбросать следующие переменные (N1 и N2)

Вот небольшая выборка моих данных.

 df<-read.table (text=" N1 N2
60  19
55  77
45  35
70  66
30  47
60  26
50  55
70  96
60  67
40  56
", header=TRUE)
 

Я хочу раскрасить круги, когда разница между N1 и N2 составляет> 20%

Я вычисляю разницу: (N2-N1) / N1 * 100, чтобы получить проценты для каждой строки. Знаки отрицательного или положительного значения игнорируются (абсолютное число)

Результат похож на этот :

введите описание изображения здесь

Это было бы хорошо, если бы у нас были доверительные интервалы.

Ответ №1:

Попробуйте это с помощью ggplot2 . Вычислите процент и сохраните нужное сравнение в логической переменной, которую можно использовать для раскрашивания точечной диаграммы:

 library(dplyr)
library(tidyr)
library(ggplot2)
#Code
df %>%
  mutate(Perc=abs((N2-N1)/N1*100),
         Col=!Perc>20) %>%
  ggplot(aes(x=N1,y=N2,color=Col)) 
  geom_point() 
  geom_smooth(method='lm',aes(group=1)) 
  theme(legend.position = 'none')
 

Вывод:

введите описание изображения здесь

Комментарии:

1. Спасибо, зеленый цвет должен читаться красным, а красный — зеленым, могу я также получить CI. Можем ли мы сделать лучше?

2. @user330 Позвольте мне обновить код для цвета, для CI вам нужно стандартное отклонение или как вы хотите добавить CI?

3. @user330 Обновил цвета, мы можем вычислить глобальный SD и среднее значение и добавить в виде строк. Для каждой точки я не вижу жизнеспособного способа вычисления SD

4. @user330 Это возможно, один момент!

5. @user330 Обновлено, дайте мне знать, если это сработает!