gpt4 book ai didi

r - 用线图覆盖箱线图

转载 作者:行者123 更新时间:2023-12-02 02:23:08 26 4
gpt4 key购买 nike

我有一些虚假数据,代表不同用户回答在线调查的回答时间。数据集包含三个变量:受访者的 id(用户)、问题名称(问题)和每个问题的回答时间(时间)。


n <- 1000
dat <- data.frame(user = 1:n,
question = sample(paste("q", 1:4, sep = ""), size = n, replace = TRUE),
time = round(rnorm(n, mean = 10, sd=4), 0)
)

pltSingleRespondent <- function(df, highlightUsers){
dat %>%
ggplot(aes(x = question, y = time)) +
geom_boxplot(fill = 'orange') + coord_flip() +
ggtitle("Answering time per question")
}


pltSingleRespondent(dat, c(1, 31) )

我正在创建一个函数,绘制一个箱线图,其中包含每个问题的回答时间。但是,现在我想将该图与特定受访者(highlightUsers)的回答时间重叠。下图显示了一个示例:

Text

有人可以解释一下我该怎么做吗?

最佳答案

我认为最直接的方法是在对 geom_line 的调用中对数据进行子集化。

我将从一组不同的随机数据开始,因为问题中的示例数据并不包含用户的所有问题。

set.seed(2021)
dat <- expand.grid(user = factor(1:50), question = paste0("q", 1:4))
dat$time <- round(rnorm(200, mean = 10, sd = 4), 0)

dat %>%
ggplot(aes(x = question, y = time)) +
geom_boxplot(fill = 'orange') + coord_flip() +
ggtitle("Answering time per question") +
geom_line(aes(color = user, group = user), size = 2,
data = ~ subset(., user %in% c(1L, 34L)))

ggplot with lines for two users

您可以根据需要对其进行功能化。如果您使用 dplyr,则可以使用 dplyr::filter 代替 subset,无需进行任何其他更改。

此外,我选择了 factor(user),因为否则 ggplot2 倾向于认为其数据是连续的(对于 color=user) 。您可以选择使用或不使用它,尽管您可能需要更多的争论才能使其离散。

关于r - 用线图覆盖箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66110214/

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