В предыдущем посте описано, как рисовать красные круги вокруг точек, которые превышают заданное значение в ggplot. Я хотел бы сделать то же самое для результатов обнаружения аномалий, но вместо этого круги будут нарисованы вокруг точек, принадлежащих заданному уровню фактора.
Как я могу изменить этот код, чтобы круги могли нарисоваться вокруг определенного уровня фактора?
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_point(data=mtcars[mtcars$mpg>30,],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
Всего 2 ответа
Предположим, что «факторный уровень», который вас интересует, - это значение 10.4
для mtcars$mpg
. mtcars$mpg
- это числовой вектор, поэтому вам сначала нужно преобразовать его в фактор.
mtcars$mpg <- as.factor(mtcars$mpg)
Затем вы можете использовать тот же код, который вы использовали ранее для значений, превышающих лимит, за исключением того, что на этот раз условие должно принадлежать фактору 10.4
:
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_point(data=mtcars[mtcars$mpg %in% 10.4, ],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
Обратите внимание, что преобразование mtcars$mpg
в коэффициент не обязательно и что код будет работать на числовом векторе таким же образом. Я преобразовал его, так как ваш вопрос касался «уровня фактора».
Также обратите внимание, что если вы не имеете дело с уровнями факторов, а просто со значениями, соответствующими определенному числу, вы можете использовать:
ggplot(mtcars, aes(wt, mpg)) +
geom_point() +
geom_point(data=mtcars[mtcars$mpg == 10.4, ],
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
так как вы сейчас проверяете только на равенство, а не на аппетит.
Все, что вам нужно, это сначала построить все точки, а затем отобразить только круги для данных, сведенных к уровням факторов, которые вы хотите выделить. Помогает ли это решить вашу проблему?
ggplot() +
geom_point(data=iris, aes(Sepal.Length, Sepal.Width)) +
geom_point(data=iris[iris$Species %in% c("setosa"),], aes(Sepal.Length, Sepal.Width),
pch=21, fill=NA, size=4, colour="red", stroke=1) +
theme_bw()
Обратите внимание, что я изменил набор данных, так как мне нужен фактор в данных, чтобы показать вам, как это работает.