gpt4 book ai didi

r - ggplot - 在折线图的 x 轴上有组

转载 作者:行者123 更新时间:2023-12-03 07:51:21 26 4
gpt4 key购买 nike

我有一个基本数据框,显示每组的 RMSE。

data <- data.frame(
RMSE = c(9.77, 9.6, 9.42, 7.98, 7.78, 7.63, 7.66, 7.65, 7.61, 6.63, 6.58, 6.43),
Model = c("LR - LHS", "LR - LHS", "LR - LHS", "XGB - Reg", "XGB - Reg", "XGB - Reg",
"RF - LHS", "RF - LHS", "RF - LHS", "XGB - LHS", "XGB - LHS", "XGB - LHS")
)

我想创建 RMSE 线图,但在 x 轴上需要模型 1、2 和 3 及其下方的组。像这样的事情:

Graph on paper

我得到的是 4 x 值,3 个点,一个在下,一个在下,而不是彼此相邻(有 12 个值)。我尝试的另一个图给出了很好的结果,但它是 4 条不同的断开线。

最佳答案

这是一种受this answer启发的方法另一个问题。
下面的代码不使用 paste0,而是使用interaction 并在组内按数字顺序排序。然后包 ggh4x ( CRANGitHub )负责对轴标签进行分组。

data <- data.frame(
RMSE = c(9.77, 9.6, 9.42, 7.98, 7.78, 7.63, 7.66, 7.65, 7.61, 6.63, 6.58, 6.43),
Model = c("LR - LHS", "LR - LHS", "LR - LHS", "XGB - Reg", "XGB - Reg", "XGB - Reg",
"RF - LHS", "RF - LHS", "RF - LHS", "XGB - LHS", "XGB - LHS", "XGB - LHS")
)

suppressPackageStartupMessages({
library(dplyr)
library(ggplot2)
})

data %>%
mutate(
Group = interaction(row_number(), Model, sep = "&"),
Group = factor(Group, levels = stringr::str_sort(Group, numeric = TRUE))
) %>%
ggplot(aes(Group, RMSE, group = Model)) +
geom_line() +
geom_point() +
guides(x = ggh4x::guide_axis_nested(delim = "&"))

创建于 2023-09-08,使用 reprex v2.0.2


我不认为每条线有不同的颜色有什么意义,它会在没有真正新信息的情况下给绘图增加噪音,这些线已经被模型组分开。
但无论如何,它就在这里。

data %>%
mutate(
Group = interaction(row_number(), Model, sep = "&"),
Group = factor(Group, levels = stringr::str_sort(Group, numeric = TRUE))
) %>%
ggplot(aes(Group, RMSE, group = Model, colour = Model)) +
geom_line() +
geom_point() +
guides(x = ggh4x::guide_axis_nested(delim = "&"))

创建于 2023-09-08,使用 reprex v2.0.2


编辑2

接听asd-tm's comment ,这是 x 轴上模型内数字的绘图。
主要区别在于数据准备,首先强制模型使用适当的级别进行因子分析,然后按模型分组,然后才创建与模型内的(行)数字的交互。

data %>%
mutate(Model = factor(Model, levels = Model %>% unique())) %>%
group_by(Model) %>%
mutate(Group = interaction(row_number(), Model, sep = "&")) %>%
ggplot(aes(Group, RMSE, group = Model, colour = Model)) +
geom_line() +
geom_point() +
guides(x = ggh4x::guide_axis_nested(delim = "&"))

创建于 2023-09-08,使用 reprex v2.0.2

关于r - ggplot - 在折线图的 x 轴上有组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77065074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com