LoginSignup
11
16

More than 5 years have passed since last update.

Rを使ったGitHub contribution graph「芝生」の可視化

Last updated at Posted at 2014-06-07

草生やしていますか?

GitHubに作成したリポジトリに対して、コミットやissuesの作成などを行うとプロフィールページに表示されるcontribution↓

contributions-private.png

どこかの界隈ではこれを「草」と呼ぶみたいです(納得?)。個人的には、コミットなどの総称して「草を生やす」と言い、このcontribution graphを「芝生」と呼びたい。

これをGitHub以外の場所でも表示させたい時には、javascriptモジュールのCal-HeatMapkamisama::cal-heatmap@GitHub
)を使うと楽。可視化に必要なデータはjson, csv, tsv, txtに対応しています。

問題

  1. プライベートリポジトリへのcontributionsが見えない
  2. データをどこから取ってくるか
  3. cal-heatmapが読み込める形式に変換

プライベートリポジトリへのcontributionsが見えない

ログインしていると自分のcontribution graphはプライベートリポジトリへのcontributionsが表示されますが、他のユーザーからは見えません↓。プライベートリポジトリにばかり貢献している人だと、ほとんど草が生えていない状態になります。

contributions-public.png

どうせならプライベートリポジトリを含んだcontribution graphを表示させたいところです。

データをどこから取ってくるか

GitHubから取得します。URLはprivateのcontributionsを含んだものになっています。usernameの場所はそれぞれ置換してください。

URL: https://github.com/users/{username}/contributions_calendar_data

cal-heatmapが読み込める形式に変換 (with R)

先ほどのURLをcal-heatmap.jsで参照しても表示されません。cal-heatmapが読み込める形式(unix time stamp)に変換する必要があります。

変換にはRjsonliteおよびhttrという2つのパッケージを使います。

ref) Calendar Heatmap with rCharts

r get-cal-heatmap-format-json.r
library(jsonlite)
library(httr)

data1 <- fromJSON("https://github.com/users/uribo/contributions_calendar_data")

colnames(data1) <- c("Date", "Value")
data2 <- transform(data1, Date = as.numeric(as.POSIXct(Date)))

myjson <- toJSON(data2, pretty=TRUE)
cat(myjson)

write(myjson, "myjson.json")

myjson.jsonというファイルが変換したファイルになります。これを読み込むように指定します。

Enjoy!?

ちらしのうら

もう少し賢い方法がきっとある...。

参考

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16