Python开发之在Python中搭建币价树形图
小职 2021-03-18 来源 :区块链研究实验室 阅读 512 评论 0

摘要:本文主要介绍了Python开发之在Python中搭建币价树形图,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助。

本文主要介绍了Python开发之在Python中搭建币价树形图,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助。

Python开发之在Python中搭建币价树形图



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

 

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

 

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

 

本教程的3个主要组成部分是:

 

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

 

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

 

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

 

从CoinMarketCap检索加密数据

 

 

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

 

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

 Python开发之在Python中搭建币价树形图

 

 

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

创建一个静态树图

 Python开发之在Python中搭建币价树形图

 

 

使用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图像的选项

 

创建交互式树形图

 Python开发之在Python中搭建币价树形图

 

 

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

 

绘制树图的一种更复杂的方法是将其激活!使用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键,就可以了!

 

 Python开发之在Python中搭建币价树形图

 

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

 

总结

 

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


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取学习教程,开发工具,代码大全,参考书籍

Python开发之在Python中搭建币价树形图

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程