ggplot 仅针对属于特定级别的点显示帕累托前沿
ggplot display Pareto front only for the points that belong to a specific level
正在使用的库
install.packages("rPref")
install.packages("dplyr")
install.packages("igraph")
install.packages("ggplot")
以mtcars
来自R的数据集为例
为了找到 Pareto 边界和水平值,请建立偏好
p <- high(mpg) * high(hp)
然后计算level-valuew.r.t。 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 的 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 的内容
这是您要找的吗?
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))
正在使用的库
install.packages("rPref")
install.packages("dplyr")
install.packages("igraph")
install.packages("ggplot")
以mtcars
来自R的数据集为例
为了找到 Pareto 边界和水平值,请建立偏好
p <- high(mpg) * high(hp)
然后计算level-valuew.r.t。 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 的 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 的内容
这是您要找的吗?
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))