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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)