年底了,需要对自己的这一年做一个总结,于是乎有了以下文字。

## 在 wiki 目录执行以下命令
## git log --no-merges --date=short --shortstat --since=2020-01-01 > wiki_stats.txt
## 请设置 wiki_stats.txt 为 ignore file
library(magrittr)
library(stringr)
library(tidyverse)
library(lubridate)
setwd("/Users/liusizhe/bitbucket/wiki")
wiki <- readLines('wiki_stats.txt')
commit_date <- wiki[grep('Date', wiki)]
commit_lines <- wiki[grep('changed', wiki)]
commit_date <- gsub('.*Date.*(2020-\\d{2}-\\d{2}).*', '\\1', commit_date) # 获取日期
file_count <- gsub('.*(\\d) file.*', '\\1', commit_lines) # 获取修改文件数
ins <- gsub('.*, (\\d{1,5}) insertion.*', '\\1', commit_lines)
ins[ins == commit_lines] <- '0' # 没有命中 ins 的正则,那么说明没有 ins
dels <- gsub('.*, (\\d{1,5}) deletion.*', '\\1', commit_lines)
dels[dels == commit_lines] <- '0' # 没有命中 del 的正则,那么说明没有 del
data <- data.frame(commit_date, file_count, ins, dels) %>%
mutate(
time = ymd(commit_date),
file_count = as.numeric(file_count),
ins = as.numeric(ins),
dels = as.numeric(dels)
)
p_data <- data %>%
group_by(commit_date) %>%
summarise(
file_count = sum(file_count),
ins = sum(ins),
dels = sum(dels)
) %>%
mutate(
commit_date = as.Date(commit_date),
add_line = cumsum(ins - dels) # 适配于 waterfall 数据格式
)
## 绘制每日提交请的图形
## 为了表达累加的概念,需要使用 waterfall 样式
library(ggplot2)
library(ggTimeSeries)
p1 <-
ggplot(p_data, aes(x = commit_date, y = add_line)) +
stat_waterfall() +
labs(title = '2020 全年,累计在个人知识管理系统提交 4156 行信息,平均每日提交 11 条,具体每日情况如下',
caption = '来源:http://bjt.name') +
ylab('行数') + xlab('提交日期') +
theme(text = element_text(family ='Noto Sans SC Light'))
p1