gpt4 book ai didi

R ggplot2 按组指定单独的颜色渐变

转载 作者:行者123 更新时间:2023-12-05 02:56:09 25 4
gpt4 key购买 nike

我正在尝试为显示在同一个散点图上的分组数据制作单独的颜色渐变。我在下面包含了示例数据。 user是唯一的用户id,task是唯一的任务id,days_completion是任务完成的天数,task_group是任务分组的组指示符,task_order是任务对用户可用的顺序去完成。每行代表用户完成特定任务的时间。 task_order 可能不会逻辑上遵循此组织,因为它是随机生成的,但它应该足以进行演示。

生成的图的 x 轴为 days_completion,y 轴为用户,geom_point 中的每个点都代表用户完成任务的时间(以天为单位)。每个任务组都有自己的颜色,按照 task_order 从深到浅的渐变。例如,任务组 1 在任务顺序 == 1 时为深红色,在任务顺序 == 7 时为浅红色。

示例代码如下:

library(dplyr)
library(forcats)
library(ggplot2)

test_data <- tibble(user = rep(seq(1:50), 10) %>%
as_factor(),
task = sample(1:10, 500, replace = TRUE) %>%
as_factor(),
days_completion = sample(1:500, 500, replace = FALSE),
task_group = sample(1:3, 500, replace = TRUE) %>%
as_factor(),
task_order = sample(1:7, 500, replace = TRUE, prob = c(rep(.25,3),.2,.2,.1,.1)) %>%
as_factor()) %>%
arrange(days_completion)

#Sample plotting approach; does not work
test_plot <- test_data %>%
ggplot(aes(x = days_completion, y = user, color = task)) +
geom_point() +
#This seems to be what I need, but I can't figure out how to specify multiple gradients by task_group
scale_color_gradient()

我知道我可以使用十六进制代码手动排序因子和映射颜色,但我想要一些可以缩放并避免手动过程的东西。此外,如果有人对如何显示除散点图以外的此图有任何建议,我愿意接受建议。主要思想是检测颜色显示的趋势中完成时间的模式。由于是随机生成的数据,趋势可能不会显示,但这没关系。

最佳答案

我的同事在另一篇文章中找到了一个解决方案,该解决方案需要一个名为 ggnewscale 的附加包。我仍然不知道这是否只能使用 ggplot2 来完成,但这可行。不过,我仍然愿意接受其他绘图建议。目的是检测用户之间和用户内部完成日期的任何趋势。我希望跨用户看到更多趋势,但内部也可以提供信息。

How merge two different scale color gradient with ggplot

library(ggnewscale)

dat1 <- test_data %>% filter(task_group == 1)
dat2 <- test_data %>% filter(task_group == 2)
dat3 <- test_data %>% filter(task_group == 3)

ggplot(mapping = aes(x = days_completion, y = user)) +
geom_point(data = dat1, aes(color = task_order)) +
scale_color_gradientn(colors = c('#99000d', '#fee5d9')) +
new_scale_color() +
geom_point(data = dat2, aes(color = task_order)) +
scale_color_gradientn(colors = c('#084594', '#4292c6')) +
new_scale_color() +
geom_point(data = dat3, aes(color = task_order)) +
scale_color_gradientn(colors = c('#238b45'))

Example draft plot

关于R ggplot2 按组指定单独的颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60764545/

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