ggplot отображает фронт Парето только для точек, принадлежащих определенному уровню
Используемые библиотеки
install.packages("rPref")
install.packages("dplyr")
install.packages("igraph")
install.packages("ggplot")
Принимая
mtcars
набор данных из R в качестве примера.
Чтобы найти границу Парето и значение уровня, необходимо установить предпочтения
p <- high(mpg) * high(hp)
Затем вычислите значение уровня относительно p, используя top-all
res <- psel(mtcars, p, top = nrow(mtcars))
Когда человек создает визуализацию следующим образом
gp <- ggplot(res, aes(x = mpg, y = hp, color = factor(.level))) + geom_point(size = 3)
Он покажет график со значениями миль на галлон и л.с. mtcars с цветами, и каждый цвет представляет уровень (близость к оптимальному). Следующим образом
Если кто-то хочет построить линию фронта Парето для каждой области всех точек более низкого уровня, можно запустить
gp + geom_step(direction = "vh")
Это приводит к
Однако, поскольку в данном случае имеет значение только 1-й уровень, как можно отобразить только точки и определенный фронт парето для уровня 1?
Изменение
factor(.level)
к
factor(1)
в качестве
gp <- ggplot(res, aes(x = mpg, y = hp, color = factor(1))) + geom_point(size = 3)
Дает следующее, которое игнорирует предыдущие уровни, но некоторые из них, которые не относятся к уровню 1, по-видимому, представлены в нем.
1 ответ
Это то, что вы ищете?
data(mtcars)
p <- high(mtcars$mpg) * high(mtcars$hp)
res <- psel(mtcars, p, top = nrow(mtcars))
res1 <- res %>% filter(.level == "1")
gp <- ggplot() +
geom_point(data = res, aes(x = mpg, y = hp, color = factor(.level)), size = 3) +
geom_step(data = res1 , aes(x=mpg, y=hp, color=factor(.level)))
Изменить, чтобы разрешить комментарии
Вот тот же график без других точек:
res %>% filter(.level == "1") %>%
ggplot() +
geom_point(aes(x = mpg, y = hp), size = 3) +
geom_step(aes(x=mpg, y=hp))