[2026-03-31] Togetterの形式が変わっていたので全面的に書き直した。
Twilog の該当者(ここでは私)のページの「Stats」をクリックし,ページのソースを stats.html という名前で保存する。
この中に {"date":"2026-03-31","timestamp":1774924064,"followee":765,"follower":38849,"statuses":137075} のような形式でデータが詰まっている。これをまず切り出してCSVファイルに収める。そのためのPythonコードは特に難しくないが、面倒なのでCodexに書いてもらったのが extract_stats_csv.py である。
結果は次のようなCSVファイル。
date,timestamp,followee,follower,statuses 2026-03-31,1774924064,765,38849,137075 2026-03-30,1774837664,765,38846,137074 2026-03-29,1774751264,766,38627,137049 2026-03-28,1774664864,766,38628,137040 2026-03-27,1774578464,766,38635,137010 2026-03-26,1774492064,766,38636,136980 ...(後略)...
これをグラフにする。これも最初はCodexに書いてもらったのだが、無駄が多いので、最初から自分で書いた。というか、3行で書けてしまう。
import pandas as pd
df = pd.read_csv('stats.csv', index_col='date', parse_dates=['date'])
df['follower'].plot()
特に今月になってからの動きが知りたい。
df['follower'][df.index >= "2026-03-01"].plot(marker="o")
月末に急増しているが、これは日本語のツイートが自動で英訳されて海外の人のタイムラインにも流されるようになったためらしい。
以下は古い内容
[2023-05-24] TwilogをTogetterさんが統合・再開してくださった。感謝!
[2023-04-06] 2023-04-05の朝、Twilog更新が終了した。今後はフォロワー数も更新されないので、2023-04-05までのデータを使って更新した。
Rで描いたグラフの例:Twitterのフォロワー数のPython版である。
Twilog の該当者(ここでは私)のページの「Stats」をクリックし,ページのソースから ar_ を含む部分をコピペする。
var ar_data = []; ar_data[1] = [...]; ar_data[2] = [...]; ar_data[3] = [...]; ar_data[4] = [...]; ar_data[5] = [...]; ar_data[6] = [...]; ar_data[7] = [...]; ar_data[8] = [...]; var ar_lbl = []; ar_lbl[1] = [...]; ar_lbl[2] = [...]; ar_lbl[3] = [...]; ar_lbl[4] = [...]; ar_lbl[5] = [...]; ar_lbl[6] = [...];
ここで var ar_data = []; を ar_data = {} に,var ar_lbl = []; を ar_lbl = {} に書き換える。各行末の ; は不要であるが,あっても問題ないので,消す必要はない。
この後に次のコードを追加して,全体を実行する。
import pandas as pd
t = [pd.to_datetime(x, format="%y%m%d") for x in ar_lbl[6]]
df = pd.DataFrame(index=t, data={'followers':ar_data[7]})
df.plot()

東日本大震災から数ヶ月だけ急増していることがわかる。その部分:
df[(df.index >= "2011-03-01") & (df.index <= "2011-08-01")].plot(marker="o")

2019年10月以降:
df[(df.index >= "2019-10-01") & (df.index <= "2019-12-01")].plot(marker="o")

どうやら10月26日に急増したみたいだ。多分これの影響だろう。
2020年はCOVID-19の影響で増えた:
df[(df.index >= "2020-01-01") & (df.index <= "2020-12-01")].plot(marker="o")

2021年8月以降:
df[df.index >= "2021-08-01"].plot(marker="o")

2021-09-01直後に急増している。ひょっとしたらこれだろうか。
2021-11-04にTwitter Proに登録してみたが,その前後で変化はない。
2022-10-27 Elon MuskがTwitter買収し、さまざまな改革を行ったが、フォロワー数に目立った変化なし。2023-01-11 Twitter Blue課金、2023-01-13 認証マーク付くが、特に変化なし。その少し後になぜかフォロワー数が増加し出した:
df[df.index >= "2023-01-01"].plot(marker="o")
以下は2021-01-01に書いた別のプロットのやりかた:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(t, ar_data[7])
fig.savefig('followers.svg', bbox_inches="tight")
37637バイトのSVGファイルができる。もっと軽くするため,プロット部分だけラスタライズしてみる:
ax.clear()
ax.plot(t, ar_data[7], zorder=-10)
ax.set_rasterization_zorder(0) # zorder < 0 だけラスタライズする
fig.savefig('followers.svg', bbox_inches="tight")
29176バイトに減った。