回归曲线自由 (代码)
本次分享利用R语言,基于ggplot2为分组数据添加拟合曲线,附详细注释代码!
我的学习小圈子👉 加入
成品展示
详细绘图代码
# 调包
library(tidyverse)
library(data.table)# 数据准备
#主要使用dplyr中的inner_join、group_by、summarize等函数,管道运算符%>%
daily_activity_fall19_spr20 <- fread("./data1.csv")
spr20_phase2_participants <- fread("./data2.csv")
daily_activity_fall19_spr20[, `:=`(active_hours, (lightlyActiveMinutes + fairlyActiveMinutes +
veryActiveMinutes)/60)]
intervention_activity <- daily_activity_fall19_spr20 %>%
inner_join(spr20_phase2_participants, by = c(userId = "App.ID")) %>%
filter(between(date, as.Date("2020-02-01"), as.Date("2020-07-17"))) %>%
group_by(date, phase2_assignment) %>%
dplyr::summarize(across(c("steps", "active_hours"), ~mean(., na.rm = TRUE)))
# 数据可视化
p <- ggplot(data = intervention_activity, aes(x = date, y = steps, group = factor(phase2_assignment),
color = factor(phase2_assignment))) + #指定绘图数据
geom_point() + #geom_point添加散点
geom_smooth(method = "loess", span = 0.25) + #geom_smooth添加平滑拟合曲线,基于loess回归
scale_x_date(date_breaks = "2 weeks",date_labels = "%b %d") + #scale_x_date设置X轴日期格式
scale_color_manual(values = c("red1", "navy"), name = "Intervention Groups",labels = c("Control", "Treatment")) + #scale_color_manual设置离散型颜色映射,涉及图例、标题等
theme_bw(base_size = 14) + #theme_bw设置图形主题,如字体size为14
theme(axis.text.x = element_text(angle = 45,vjust = 1, hjust = 1), legend.position = "bottom", plot.margin = margin(t = 5,r = 25, b = 5, l = 5, unit = "pt"), panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank()) + #theme个性化主题,例如,轴标签的旋转角度、图例位置、绘图区域的边距等
xlab("Date") + ylab("Active steps per day") + #设置轴标题
geom_vline(xintercept = as.Date("2020-04-20"),linetype = "dashed") +
geom_vline(xintercept = as.Date("2020-05-30"), linetype = "dashed") +
geom_vline(xintercept = as.Date("2020-06-15"), linetype = "dashed") #geom_vline添加垂直虚线
# 数据渲染、保存
p
ggsave("./intervention_steps_tojuly.pdf", plot = p, device = "pdf") #ggsave保存高dpi图形

我的学习小圈子👉 加入
点个 在看就是最大的支持