我正在编写一个Python程序来生成加密货币价格的线图。 目标是能够在同一水平时间线上覆盖多个任意对,即BTC / USD + ETH / BTC,或BTC / USD + BCH / LTC + XRP / BTG,类似于https://coinmarketcap.com/currencies/ethereum/
上面例子中的铃声和口哨声不是必需的。如果这些功能增加了实施难度,它不需要点击缩放技术,对数刻度按钮或花哨的工具提示。每行的单独颜色会有所帮助。这是我必须使用的数据格式:
https://min-api.cryptocompare.com/data/histominute?fsym=BTC&tsym=USD&limit=60&aggregate=1&e=Coinbase
https://min-api.cryptocompare.com/data/histominute?fsym=ETH&tsym=BCH&limit=30&aggregate=1&e=CCCAGG
目前,我在Visual Studio上安装了Anaconda 3.6,根据https://docs.anaconda.com/anaconda/packages/py3.6_win-64.html,它应该包含多个包来绘制这些数据,而无需通过命令行手动安装第三方代码。但是,当我尝试导入它们中的任何一个(即matplotlib,bokeh,seaborn)时,我收到一条“ModuleNotFoundError”消息,因此我不确定我的Anaconda是否正常运行。用Anaconda绘制这些数据的最简单方法是什么?
答案 0 :(得分:1)
VSCode中的python解释器可能没有使用您的Anaconda安装。在VSCode python shell中,键入import sys
然后sys.version
,它应该告诉您正在使用的python版本。
以下是一些代码,可以帮助您开始在散景中完成此操作,这是Anaconda附带的一个库。我没有使用Visual Studio(或Visual Studio Code - 我不确定你指的是哪一个),而是使用了jupyter notebook
,这里的一些导入是特定于该环境的(显示散景图内联)。您可能希望以不同方式格式化日期。
from bokeh.plotting import figure, output_file, show
from bokeh.io import output_notebook
import numpy as np
output_notebook()
import requests
import datetime
from math import pi
def format_date(utc_time):
time = datetime.datetime.fromtimestamp(int(utc_time))
return time
url1 = "https://min-api.cryptocompare.com/data/histominute?fsym=BTC&tsym=USD&limit=60&aggregate=1&e=Coinbase"
url2 = "https://min-api.cryptocompare.com/data/histominute?fsym=ETH&tsym=BCH&limit=30&aggregate=1&e=CCCAGG"
r1 = requests.get(url1)
r2 = requests.get(url2)
r1_source = r1.json()["Data"]
r2_source = r2.json()["Data"]
r1_data = [i["close"] for i in r1_source]
r1_time = [format_date(i["time"]) for i in r1_source]
# r2_data = [i["close"] for i in r2_source]
# r2_time = [i["time"] for i in r2_source]
p = figure(plot_width=800, plot_height=400)
p.line(r1_time,r1_data, line_width=2)
# p.line(r2_time, r2_data, line_width=2, line_color="red")
p.xaxis.major_label_orientation = pi/4