bitFlyer의 Echo API를 사용하여 Bitcoin의 실시간 속도를 시각화 (2)
19095 단어 Python3Bitcoin파이썬bitflyermatplotlib
소개
bitFlyer의 Echo API를 사용하여 Bitcoin의 실시간 속도 시각화 (1) 의 계속입니다.
전회부터의 변경점
프로그램
main.py
import requests
import json
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.font_manager import FontProperties
import matplotlib as mpl
from datetime import datetime
# エンドポイント
end_point = 'https://bitflyer.jp/api/echo/price'
# 表示するテキストフォーマット
rate_text = '仲値\nMax : {}\nMin : {}\n\n買取価格\nMax : {}\nMin : {}\n\n販売価格\nMax : {}\nMin : {}'
# APIからデータ取得
response = requests.get(end_point)
rate = json.loads(response.text)
# 日本語を表示するためにフォントを設定
fp = FontProperties(fname='ipaexg.ttf', size=15)
# 各データを初期化
time_axis = [datetime.now() for _ in range(60)]
mid = [rate['mid'] for _ in range(60)]
bid = [rate['bid'] for _ in range(60)]
ask = [rate['ask'] for _ in range(60)]
max_mid = max(mid)
min_mid = min(mid)
max_bid = max(bid)
min_bid = min(bid)
max_ask = max(ask)
min_ask = min(ask)
# ウィンドウを描画
mpl.rcParams['toolbar'] = 'None'
fig = plt.figure(figsize=(18,10), facecolor='#1B2027')
axes = plt.axes(axisbg='black', alpha=0.2)
axes_pos = axes.get_position()
plt.grid(color='#232323')
plt.tick_params(axis='x', colors='#ADADAD')
plt.tick_params(axis='y', colors='#ADADAD')
# コールバック関数
def plot(loop_count):
global max_mid
global min_mid
global max_bid
global min_bid
global max_ask
global min_ask
# グラフをリフレッシュ
plt.cla()
fig.clf()
axes = plt.axes(axisbg='black', alpha=0.2)
axes_pos = axes.get_position()
plt.grid(color='#232323')
plt.tick_params(axis='x', colors='#ADADAD')
plt.tick_params(axis='y', colors='#ADADAD')
plt.grid(color='#232323')
# APIからデータ取得
response = requests.get(end_point)
rate = json.loads(response.text)
# 配列の先頭を削除
time_axis.pop(0)
mid.pop(0)
bid.pop(0)
ask.pop(0)
# 配列の最後にデータを追加
time_axis.append(datetime.now())
mid.append(rate['mid'])
bid.append(rate['bid'])
ask.append(rate['ask'])
# 最大値、最小値の更新
max_mid = max(mid) if max_mid < max(mid) else max_mid
min_mid = min(mid) if min_mid > min(mid) else min_mid
max_bid = max(bid) if max_bid < max(bid) else max_bid
min_bid = min(bid) if min_bid > min(bid) else min_bid
max_ask = max(ask) if max_ask < max(ask) else max_ask
min_ask = min(ask) if min_ask > min(ask) else min_ask
# プロット
plt.plot(time_axis, mid, label='仲値')
plt.plot(time_axis, bid, label='買取価格')
plt.plot(time_axis, ask, label='販売価格')
fig.text(axes_pos.x1 + 0.05, axes_pos.y1 - 0.5, rate_text.format(max_mid, min_mid, max_bid, min_bid, max_ask, min_ask), fontproperties=fp, color='w', fontsize=15)
# ラベル配置
leg = plt.legend(loc='upper left', bbox_to_anchor=(1.05, 1), borderaxespad=0, prop=fp, facecolor='#1B2027', edgecolor='#ED6751')
[leg_text.set_color('white') for leg_text in leg.get_texts()]
plt.subplots_adjust(right=0.8)
# 500ms(0.5s)でアニメーションを更新
ani = FuncAnimation(fig, plot, interval=500)
# 描画
plt.show()
실행 결과

전회보다 상당히 좋은 느낌이 되었습니다.
Reference
이 문제에 관하여(bitFlyer의 Echo API를 사용하여 Bitcoin의 실시간 속도를 시각화 (2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ksk001100/items/ec30c93a367e67804ded텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)