Skip to content
The Second Culture
Go back
2020 的年终总结

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

## 在 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

Share this post on:

Previous Post
从北京地铁规划再看地段的重要性
Next Post
你为什么可以被晋升?