如何用geom_line绘制随Days_Elapsed递增的密码累计计数折线图
密码注册累计数量折线图实现方案
步骤1:加载必要的R包
我们需要用dplyr做数据处理,ggplot2绘图,先加载这两个包:
library(dplyr) library(ggplot2)
步骤2:预处理数据(补全天数+计算累计值)
原数据缺少部分天数的记录(比如第2、3、6天),我们需要先补全所有天数,再统计每天的注册数,最后计算累计数量:
# 生成从第1天到最大天数的完整序列 full_days <- data.frame(Days_Elapsed = 1:max(df$Days_Elapsed)) # 统计每天的注册数,缺失天数的注册数设为0 daily_registrations <- df %>% count(Days_Elapsed, name = "Daily_Count") %>% right_join(full_days, by = "Days_Elapsed") %>% mutate(Daily_Count = ifelse(is.na(Daily_Count), 0, Daily_Count)) # 计算累计注册数量 cumulative_registrations <- daily_registrations %>% mutate(Cumulative_Count = cumsum(Daily_Count))
步骤3:绘制折线图
用geom_line绘制折线,同时可以用点标记有注册行为的日期,让图表更清晰:
ggplot(cumulative_registrations, aes(x = Days_Elapsed, y = Cumulative_Count)) + geom_line(color = "#2c3e50", linewidth = 1.2) + geom_point(data = filter(cumulative_registrations, Daily_Count > 0), color = "#e74c3c", size = 2.5) + labs(title = "密码注册累计数量趋势", x = "已过天数", y = "累计注册数量") + theme_bw()
运行上述代码后,得到的折线图会在无注册的天数保持水平,有注册的天数则对应上升,完全匹配你描述的需求(比如第1天累计3,第2、3天保持3,第4天升至5,以此类推)。
内容的提问来源于stack exchange,提问作者Stats Iliterate
相关产品推荐
相关产品推荐

