0

正在使用的库

install.packages("rPref")
install.packages("dplyr")
install.packages("igraph")
install.packages("ggplot") 

mtcarsR 中的数据集为例。

为了找到帕累托边界和水平值一建立偏好

p <- high(mpg) * high(hp) 

然后使用 top-all 计算水平值 wrt p

res <- psel(mtcars, p, top = nrow(mtcars))

当如下创建可视化时

gp <- ggplot(res, aes(x = mpg, y = hp, color = factor(.level))) + geom_point(size = 3)

它将显示带有颜色的 mtcars 的 mpg 和 hp 值的图,每种颜色代表级别(接近最佳值)。如下

在此处输入图像描述

如果要为较低级别的所有点的每个区域绘制帕累托前线,可以运行

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 级的似乎有特色

在此处输入图像描述

4

1 回答 1

2

这是你要找的吗?

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

在此处输入图像描述

于 2021-02-01T20:23:50.197 回答