bitFlyer의 Echo API를 사용하여 Bitcoin의 실시간 속도를 시각화 (2)
19095 단어 Python3Bitcoin파이썬bitflyermatplotlib
소개
bitFlyer의 Echo API를 사용하여 Bitcoin의 실시간 속도 시각화 (1) 의 계속입니다.
전회부터의 변경점
프로그램
main.pyimport 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.)
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.)