人工智能

在Python中搭建币价树形图

时间:2010-12-5 17:23:32  作者:系统运维   来源:人工智能  查看:  评论:0
内容摘要:本文转载自微信公众号「区块链研究实验室」,作者链三丰 。转载本文请联系区块链研究实验室公众号。截至2021年3月,有8,000多种加密货币,因此一目了然地跟踪所有价格的发展可能是具有挑战性的。幸运的是

本文转载自微信公众号「区块链研究实验室」,中搭作者链三丰 。建币价树转载本文请联系区块链研究实验室公众号。形图  

截至2021年3月,中搭有8,建币价树000多种加密货币,因此一目了然地跟踪所有价格的形图发展可能是具有挑战性的。幸运的中搭是,像coin360这样的建币价树网站以树形图的形式提供了加密货币价格发展的简洁可视化。树状图通过使用可变大小的形图矩形以嵌套结构的形式显示比例价格数据,从而提供了所有加密货币的中搭快速概览。

对此概念感兴趣,建币价树我决定尝试使用Python创建我自己的形图版本的树形图以跟踪加密价格的想法。此树形图教程不仅限于显示加密信息,中搭还可以应用于几乎任何其他数据。建币价树

为了最大程度地提高Python代码的形图可移植性,本教程使用Google Colab创建,因此笔记本可以在任何Chrome浏览器上运行。

本教程的3个主要组成部分是云南idc服务商

如何使用CoinMarketCap API调用和检索最近24小时内的加密货币价格

使用库Squarify在Python中绘制静态树图

使用库Plotly在Python中绘制交互式树图

从CoinMarketCap检索加密数据

免责声明:CoinMarketCap数据的免费版本仅供个人使用,出于商业目的,请参阅CMC的定价计划。

首先,如果您还没有的话,您需要在此处注册一个开发者帐户。登录后,导航至仪表板并复制唯一的API密钥。

CoinMarketCap截图

通过使用下面显示的代码片段,您应该能够从CoinMarketCap调用前10个加密数据。可以调整参数以包括更多或更少的数据以及所使用的货币。切记在第15行中替换您的API密钥。此代码段在发布时是最新的,有关将来的任何更新,请参阅官方文档。

#This example uses Python 2.7 and the python-request library. from requests import Request, Session from requests.exceptions import ConnectionError, Timeout, TooManyRedirects import json url = https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest parameters = {    start:1,   limit:10,   convert:USD } headers = {    Accepts: application/json,   X-CMC_PRO_API_KEY: #REPLACE YOUR API KEY HERE#, } session = Session() session.headers.update(headers) try:     response = session.get(url, params=parameters)     data = json.loads(response.text)     print(data) except (ConnectionError, Timeout, TooManyRedirects) as e:     print(e) 

API返回的数据为JSON格式,因此需要以pythonic数据框格式进行规范化(请参见第4行)。还对数据进行过滤,以仅保留与树图相关的云服务器提供商几列,即加密货币的名称,排名,价格及其关联的市值(请参阅第5行)。

import pandas as pd #normalize the data into dataframe format df = pd.json_normalize(data["data"]) cols_to_keep = [name,symbol,cmc_rank,quote.USD.price,quote.USD.percent_change_24h,quote.USD.market_cap,] df_final = df[cols_to_keep] #rename columns df_final.columns = [name,symbol,cmc_rank,USD_price,USD_percent_change_24h,USD_market_cap,] #uncomment below to print the table #df_final 

创建一个静态树图

使用Squarify创建的树图

Squarify是树图布局算法的库实现。它通过计算数据大小并返回矩形的一系列坐标来工作,然后使用绘制这些坐标MatPlotLib。可以使用颜色编码的参数来可视化变化的规模,在此示例中,其是过去24小时内价格变化的百分比。但是,不利的一面是,目前尚无直接实现可根据变化的矩形的大小来缩放标签的方法。Python代码如下。

import matplotlib import matplotlib.pyplot as plt #!pip install squarify import squarify  #load data sizes=df_final["USD_market_cap"] label=df_final["name"] # color scale on the price development  # min and max values cmap = matplotlib.cm.RdYlGn #RedYellowGreen mini=min(df_final["USD_percent_change_24h"]) maxi=max(df_final["USD_percent_change_24h"]) norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi) colors = [cmap(norm(value)) for value in df_final["USD_percent_change_24h"]] # labels in treemap squares labels = ["%s\n%d USD\n%0.2f%%" % (label) for label in zip(df_final.symbol, df_final["USD_price"], df_final["USD_percent_change_24h"])] # make plot fig = plt.figure(figsize=(20, 10)) ax = fig.add_subplot(111, aspect="auto") ax = squarify.plot(df_final["USD_market_cap"], color=colors, label=labels,  alpha=.8) ax.set_title("Cryptomarket price change last 24 hours\n", fontsize=18) # plot title and color bar img = plt.imshow([df_final["USD_percent_change_24h"]], cmap=cmap) img.set_visible(True) fig.colorbar(img, orientation="vertical", shrink=.96) fig.text(.76, .9, "Percentage change", fontsize=14) # if you want to export the figure #plt.savefig("cmc_treemaps.png") plt.show() 

说明:

第1至4行:导入并安装(如果需要)所需的库

第6-8行:加载树形图的数据

第10-16行:对价格变化百分比应用颜色编码的站群服务器缩放比例

第18-19行:为要显示的文本创建字符串标签

第21–25行:绘制树形图

第27–31行:在侧面应用颜色条

第33–35行:显示树状图,并带有将其导出为png图像的选项

创建交互式树形图

扫码查看交互式树形图效果

绘制树图的一种更复杂的方法是将其激活!使用Plotly可以创建一个交互式树状图,当您在每个矩形块上悬停时,它会显示有关每个矩形块的详细信息。Plotly在后台为您完成了大部分工作,从而导致与Squarify相比,更少的代码行更加精简和优雅。

#!pip install --upgrade plotly import plotly.graph_objects as go import plotly.express as px fig = px.treemap(df_final,                   path=[name],                   values=USD_market_cap,                  color_continuous_scale=RdYlGn,                  color=USD_percent_change_24h,                              ) fig.update_layout(title_text=Cryptomarket price change last 24 hours, title_x=0.5) fig.show() 

说明:

第1至3行:导入并安装所需的库

第5-10行:绘制树形图

第11行:在树形图上添加标题

第12行:显示树状图

如何在媒体/网站中嵌入交互式树图

想知道您上面看到的嵌入式树形图是如何完成的?您可以使用Plotly Studio轻松地做到这一点,而好处是您可以直接将Google Colab笔记本与Plotly Studio关联(您需要有一个帐户)。只需在下面添加此代码段,然后使用您的Plotly用户名和API密钥即可完成。

#To push your GC plot to Plotly Studio automatically #!pip install chart_studio import chart_studio  import chart_studio.plotly as py username = #REPLACE YOUR USERNAME HERE# # your username api_key = #REPLACE YOUR API KEY HERE# # your api key - go to profile > settings > regenerate key chart_studio.tools.set_credentials_file(username=username, api_key=api_key) py.plot(fig, filename = cmc_treemap, auto_open=True) 

将您的Plotly树图推入/同步到Plotly Studio后,只需将链接复制到Plotly Studio,然后将该链接粘贴到Medium中作为嵌入式链接,然后按Enter键,就可以了!

如何在网站上上插入嵌入式链接

总结

通过可视化不同矩形和颜色的层次结构数据,树形图是讲述故事的好方法。当您要按大小顺序快速可视化大量数据,以及可以选择对第二维使用不同色调和颜色强度的选项时,此功能非常有效。但是,树形图的一个缺点是进行精确的定量比较可能具有挑战性。

copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap