R和ggplot:对分类变量的颜色进行着色
我想做一个图表,表示一周中每天每小时发生事件的频率。如何更改一周中某一天的颜色?我想在周末前后从黑色改为红色R和ggplot:对分类变量的颜色进行着色,r,ggplot2,R,Ggplot2,我想做一个图表,表示一周中每天每小时发生事件的频率。如何更改一周中某一天的颜色?我想在周末前后从黑色改为红色 weekday_hour_pickup <- my_data %>% mutate(hour_pick = hour(new_pickup))%>% group_by(hour_pick, weekday) %>% count() %>% ggplot(aes(hour_pick, n, color = w
weekday_hour_pickup <- my_data %>%
mutate(hour_pick = hour(new_pickup))%>%
group_by(hour_pick, weekday) %>%
count() %>%
ggplot(aes(hour_pick, n, color = weekday)) +
geom_line(size = 1.5) +
labs(x = "hour of the day", y = "count")
plot(weekday_hour_pickup)
weekday\u hour\u pickup%
变异(小时拾取=小时(新拾取))%>%
分组依据(小时、工作日)%>%
计数()%>%
ggplot(aes(小时,n,颜色=工作日))+
几何尺寸线(尺寸=1.5)+
实验室(x=“一天中的小时”,y=“计数”)
绘图(工作日/小时/取货)
这是一个很好的选项,可以使您的值描述为具有梯度
# call libraries
library(dplyr)
library(ggplot2)
# define weekdays
weekdays <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
# define 7 colours from black to red
colours <- scales::seq_gradient_pal(low = "#000000", high = "#ff0000", space = "Lab")(1:7/7)
# create values for scale colour manual
values <- setNames(colours, weekdays)
# create fake data
data <- tibble(hour_pick = rep(1:24, 7),
n = rnorm(7*24) + rep(1:7, each = 24),
# weekday must be a factor if you want your legend to be sorted!
weekday = factor(rep(weekdays, each = 24), levels = weekdays, ordered = TRUE))
ggplot(data) +
geom_line(aes(x = hour_pick, y = n, colour = weekday)) +
theme_light() +
scale_colour_manual(values = values)
#调用库
图书馆(dplyr)
图书馆(GG2)
#定义工作日
工作日首先,模拟数据的外观
TIMES = seq(from=mdy_hm("May 11, 1996 12:05"),
to=mdy_hm("May 18, 1996 12:05"),length.out=10000)
days.of.week <- weekdays(as.Date(4,"1970-01-01",tz="GMT")+0:6)
n = 1000
set.seed(100)
i = sample(1:length(TIMES),n)
my_data <- data.frame(
new_pickup=TIMES[i],
weekday = weekdays(TIMES[i])
)
TIMES=seq(from=mdy_hm(“1996年5月11日12:05”),
to=mdy_hm(“1996年5月18日12:05”),长度为10000)
每周天数添加scale\u color\u手册(…,values,美学=“color”)
并在values
中写下您想要的颜色也许这可以回答您的问题:scale\u fill\u gradient(low=“black”,high=“red”),您应该提供变量my\u数据的样本
my_data$weekday <- factor(my_data$weekday,levels=days.of.week)
COLS <- alpha(colorRampPalette(c("black","firebrick"))(7),0.6)
names(COLS) <- days.of.week
weekday_hour_pickup <- my_data %>%
mutate(hour_pick = hour(new_pickup))%>%
group_by(hour_pick, weekday) %>%
count() %>%
ggplot(aes(hour_pick, n, color = weekday)) +
geom_line(size = 1) +
labs(x = "hour of the day", y = "count")+
scale_color_manual(values=COLS) +
theme_bw()