#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 Обновлено, дайте мне знать, если это сработает!