(3-4)绘制散点图和折线图:绘制BTC(比特币)和ETH(以太币)的价格走势图

3.4  绘制BTC(比特币)和ETH(以太币)的价格走势图

在本节的内容中,将远程获取当前国际市场中BTC(比特币)和ETH(以太币)的实时价格,并绘制BTC(比特币)和ETH(以太币)的价格走势曲线图。

3.4.1  抓取数据

编写实例文件Assignment_Step1.py,功能是抓取权威网站中BTC和ETH的报价数据,并打印输出显示BTC和ETH的当前价格。

源码路径:codes\3\3-4\Crypto-Analysis\Assignment_Step1.py

import requests
def price(symbol, comparison_symbols=['USD'], exchange=''):
    url = 'https://min-api.cryptocompare.com/data/price?fsym={}&tsyms={}'\
            .format(symbol.upper(), ','.join(comparison_symbols).upper())
    if exchange:
        url += '&e={}'.format(exchange)
    page = requests.get(url)
    data = page.json()
    return data

print("当前BTC的美元价格为: "+str(price('BTC')))
print("当前ETH的美元价格为: "+str(price('ETH')))

2020年5月13日执行本实例后会输出:

当前BTC的美元价格为: {'USD': 8910.06}

当前ETH的美元价格为: {'USD': 190.47}

3.4.2  绘制BTC/美元价格曲线

编写实例文件Assignment_Step2.py,功能是根据当前的BTC价格,使用库Matplotlib绘制BTC/美元价格曲线图。

源码路径:codes\3\3-4\Crypto-Analysis\Assignment_Step2.py

from Assignment_Step1 import price
import datetime
import matplotlib.pyplot as plt

x=[0]
y=[0]
fig = plt.gcf()
fig.show()
fig.canvas.draw()
plt.ylim([0, 20000])
i=0
while(True):
    data = price('BTC')
    i+=1
    x.append(i)
    y.append(data['USD'])
    plt.title("BTC vs USD, Last Update is: "+str(datetime.datetime.now()))
    plt.plot(x,y)
    fig.canvas.draw()
    plt.pause(1000)

执行后的效果如图3-37所示。

图3-37  执行效果

3.4.3  绘制BTC和ETH的历史价格曲线图

编写实例文件Assignment_Step3.py,功能是首先爬取权威网站中的BTC和ETH的历史价格数据,然后使用库Matplotlib和pandas绘制BTC和ETH的历史价格曲线图。

源码路径:codes\3\3-4\Crypto-Analysis\Assignment_Step3.py

import requests
import datetime
import pandas as pd
import matplotlib.pyplot as plt

def hourly_price_historical(symbol, comparison_symbol, limit, aggregate, exchange=''):
    url = 'https://min-api.cryptocompare.com/data/histohour?fsym={}&tsym={}&limit={}&aggregate={}'\
            .format(symbol.upper(), comparison_symbol.upper(), limit, aggregate)
    if exchange:
        url += '&e={}'.format(exchange)
    print(url)
    page = requests.get(url)
    data = page.json()['Data']
    df = pd.DataFrame(data)
    df['timestamp'] = [datetime.datetime.fromtimestamp(d) for d in df.time]

    return df

def plotchart(axis, df, symbol, comparison_symbol):
    axis.plot(df.timestamp, df.close)

df1 = hourly_price_historical('BTC','USD', 2000, 1)
df2 = hourly_price_historical('ETH','USD', 2000, 1)
f, axarr = plt.subplots(2)


plotchart(axarr[0],df1,'BTC','USD')
plotchart(axarr[1],df2,'ETH','USD')

plt.show()

执行后的效果如图3-38所示。

图3-38  执行效果

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值