Нарисуйте круги вокруг точек, принадлежащих уровню фактора в ggplot - PullRequest
0 голосов
/ 22 октября 2018

Предыдущий пост описывает, как нарисовать красные круги вокруг точек, которые превышают заданное значение в 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 ]

0 голосов
/ 22 октября 2018

Предположим, что интересующий вас «уровень фактора» - это значение 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()

так как вы сейчас проверяете только на равенство, а не на самообладание.

0 голосов
/ 22 октября 2018

Все, что вам нужно, это сначала построить все точки, а затем построить только круги для данных, приведенных к уровням факторов, которые вы хотите выделить.Решает ли это вашу проблему?

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()

Обратите внимание, что я изменил набор данных, так как мне нужен был фактор в данных, чтобы показать вам, как он работает.

...