paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

GTAオンラインマネーのキャッシュフローを可視化したい グラフ化する編

前回

paloma69.hatenablog.com

溜まったデータはこんな感じです。

PS C:\Users\masashi\tools\gta_assets> cat .\data\gtacashflow.csv
2020/04/12 17:15,40000,1081924
2020/04/12 17:30,40000,1081924
2020/04/12 17:45,0,1121924
2020/04/12 18:00,0,1095781
2020/04/12 18:15,0,1060181
2020/04/12 18:30,0,1236818
2020/04/12 18:45,2000,1236818
2020/04/12 19:00,2000,1136818
2020/04/12 19:15,0,1122693
2020/04/12 19:30,0,1239993
2020/04/12 19:45,0,1248918
2020/04/12 20:00,0,1248918
2020/04/12 20:15,0,1248918

グラフ化

私含めたSIer業界()ならExcelでグラフ化するところですが、
私も脱Excelをしていきたいのでコードを書いてグラフに起こします。

pythonのサイトでよく出てくるmatplotlibを使います。
numpyもセットでよく使われますが、今回は使わず前回タンキングしたCSVを使います。

コード

取得したデータから起こします。
現金と銀行預金のデータがありますので、併せられるよう棒グラフにします。

グラフ化はpyplotというメソッドを使います。
凡例もつけられて凄い便利です。

matplotlibの使用例はpyplotがほとんどなんですが、
他の使い方って出てきませんね。
(今度調べてみます)

とりあえずpyplotはデータをリスト化して使うと覚えておけば何とかなりますw

  • view_assets.py
import csv
import matplotlib.pyplot as plt

with open('.\\data\\gtacashflow.csv', 'r') as f:
    Assets = csv.reader(f)
    DATA = list(Assets)

x = list() 
y_cash = list()
y_bank = list()

for a in DATA:
    x.append(a[0])
    y_cash.append(int(a[1]))
    y_bank.append(int(a[2]))

# Create graph as bar, add legend
p1 = plt.bar(x, y_bank, color='blue')
p2 = plt.bar(x, y_cash, bottom=y_bank, color='green')
plt.legend((p1[0],p2[0]),('Bank','Cash'))

# Fine-tune labels
plt.title('GTA Online Asset Flow')
plt.xticks(rotation=45)
plt.ylabel('Assets ($)')
plt.ylim([0,1500000])

plt.show()

実行

PS C:\Users\masashi\tools\gta_assets> python .\view_assets.py

f:id:paloma69:20200413221209p:plain

OK!

なんかそれっぽくないですか?
思ったより増減の幅が少ないので映えませんがいい感じ!

ミッションで稼いではいますが、持っている拠点の日時の固定費の支出もあるので意外とお金貯まりません。

cashが無いのは死ぬと減ってしまうのですぐ銀行に預けるためです。
預けておくと死んでも減りません。
買い物は預金から使うこともできるのでなるべく現金を持たないのがコツですw

で、これって何の役に立つん?

ただのゲーム内通貨のフローをグラフ化しただけなので役には立ちません。

しかし、自キャラのキャッシュフロー見える化できました。

ゲーム内の犯罪会社の出来事ですが、
自分の稼ぐさまを見ることで一応経営者気分が味わえますw

まあ、メインはコードでのグラフ化なのでそれが実装できて嬉しいです。
GUI系の出力ができるとプログラミングの面白さが加速しますね。

結び

役に立たないと言いながらこれを使って自作の支払い集計ツールの可視化もできそうですね。

また、Rockstar社のゲームなら似たようなHPになってると思うのでこの方法で資金系の可視化ができそうです。
Red Dead Redemption 2は未購入ですが、買ったらこれと合わせてやってみます。

本件のネタは1年くらい前に思いついたのですが、やっと実現できました。

APIが動かない、seleniumでこれ以上進めない、で何回も挫折したのですが、
今どき調べれば何かヒットしますね。(ヒントになり得るものでも)
先人の知恵に感謝です。

データタンキング用のブラウザ操作の過程が一番難しくて
今回のグラフ化はどちらかというと簡単でした。

ブラウザの仕組み、認証の仕組みなどインターネットは奥が深くて楽しいです。
いや、深すぎか。


これもGithubリポジトリ作りました。

github.com

まだリポジトリのみですが、随時更新していきます。
グラフの上限値の自動設定や棒グラフのカラーなんかは調整したいですね。

それでは最後に私の愛車、インテヴェーロ コケットのテールを見ながらお別れしましょう。

f:id:paloma69:20200413225850p:plain

参考サイト