自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Python中搭建幣價(jià)樹形圖

開發(fā) 后端
截至2021年3月,有8,000多種加密貨幣,因此一目了然地跟蹤所有價(jià)格的發(fā)展可能是具有挑戰(zhàn)性的。幸運(yùn)的是,像coin360這樣的網(wǎng)站以樹形圖的形式提供了加密貨幣價(jià)格發(fā)展的簡(jiǎn)潔可視化。

[[387495]]

本文轉(zhuǎn)載自微信公眾號(hào)「區(qū)塊鏈研究實(shí)驗(yàn)室」,作者鏈三豐 。轉(zhuǎn)載本文請(qǐng)聯(lián)系區(qū)塊鏈研究實(shí)驗(yàn)室公眾號(hào)。  

截至2021年3月,有8,000多種加密貨幣,因此一目了然地跟蹤所有價(jià)格的發(fā)展可能是具有挑戰(zhàn)性的。幸運(yùn)的是,像coin360這樣的網(wǎng)站以樹形圖的形式提供了加密貨幣價(jià)格發(fā)展的簡(jiǎn)潔可視化。樹狀圖通過使用可變大小的矩形以嵌套結(jié)構(gòu)的形式顯示比例價(jià)格數(shù)據(jù),從而提供了所有加密貨幣的快速概覽。

對(duì)此概念感興趣,我決定嘗試使用Python創(chuàng)建我自己的版本的樹形圖以跟蹤加密價(jià)格的想法。此樹形圖教程不僅限于顯示加密信息,還可以應(yīng)用于幾乎任何其他數(shù)據(jù)。

為了最大程度地提高Python代碼的可移植性,本教程使用Google Colab創(chuàng)建,因此筆記本可以在任何Chrome瀏覽器上運(yùn)行。

本教程的3個(gè)主要組成部分是:

如何使用CoinMarketCap API調(diào)用和檢索最近24小時(shí)內(nèi)的加密貨幣價(jià)格

使用庫(kù)Squarify在Python中繪制靜態(tài)樹圖

使用庫(kù)Plotly在Python中繪制交互式樹圖

從CoinMarketCap檢索加密數(shù)據(jù)

 

免責(zé)聲明:CoinMarketCap數(shù)據(jù)的免費(fèi)版本僅供個(gè)人使用,出于商業(yè)目的,請(qǐng)參閱CMC的定價(jià)計(jì)劃。

首先,如果您還沒有的話,您需要在此處注冊(cè)一個(gè)開發(fā)者帳戶。登錄后,導(dǎo)航至儀表板并復(fù)制唯一的API密鑰。

 

CoinMarketCap截圖

通過使用下面顯示的代碼片段,您應(yīng)該能夠從CoinMarketCap調(diào)用前10個(gè)加密數(shù)據(jù)??梢哉{(diào)整參數(shù)以包括更多或更少的數(shù)據(jù)以及所使用的貨幣。切記在第15行中替換您的API密鑰。此代碼段在發(fā)布時(shí)是最新的,有關(guān)將來(lái)的任何更新,請(qǐng)參閱官方文檔。

  1. #This example uses Python 2.7 and the python-request library. 
  2.  
  3. from requests import Request, Session 
  4. from requests.exceptions import ConnectionError, Timeout, TooManyRedirects 
  5. import json 
  6.  
  7. url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest' 
  8. parameters = { 
  9.   'start':'1'
  10.   'limit':'10'
  11.   'convert':'USD' 
  12. headers = { 
  13.   'Accepts''application/json'
  14.   'X-CMC_PRO_API_KEY''#REPLACE YOUR API KEY HERE#'
  15.  
  16. session = Session() 
  17. session.headers.update(headers) 
  18.  
  19. try: 
  20.     response = session.get(url, params=parameters) 
  21.     data = json.loads(response.text) 
  22.     print(data) 
  23. except (ConnectionError, Timeout, TooManyRedirects) as e: 
  24.     print(e) 

API返回的數(shù)據(jù)為JSON格式,因此需要以pythonic數(shù)據(jù)框格式進(jìn)行規(guī)范化(請(qǐng)參見第4行)。還對(duì)數(shù)據(jù)進(jìn)行過濾,以僅保留與樹圖相關(guān)的幾列,即加密貨幣的名稱,排名,價(jià)格及其關(guān)聯(lián)的市值(請(qǐng)參閱第5行)。

  1. import pandas as pd 
  2.  
  3. #normalize the data into dataframe format 
  4. df = pd.json_normalize(data["data"]) 
  5. cols_to_keep = ['name','symbol','cmc_rank','quote.USD.price','quote.USD.percent_change_24h','quote.USD.market_cap',] 
  6. df_final = df[cols_to_keep] 
  7. #rename columns 
  8. df_final.columns = ['name','symbol','cmc_rank','USD_price','USD_percent_change_24h','USD_market_cap',] 
  9. #uncomment below to print the table 
  10. #df_final 

創(chuàng)建一個(gè)靜態(tài)樹圖

 

使用Squarify創(chuàng)建的樹圖

Squarify是樹圖布局算法的庫(kù)實(shí)現(xiàn)。它通過計(jì)算數(shù)據(jù)大小并返回矩形的一系列坐標(biāo)來(lái)工作,然后使用繪制這些坐標(biāo)MatPlotLib。可以使用顏色編碼的參數(shù)來(lái)可視化變化的規(guī)模,在此示例中,其是過去24小時(shí)內(nèi)價(jià)格變化的百分比。但是,不利的一面是,目前尚無(wú)直接實(shí)現(xiàn)可根據(jù)變化的矩形的大小來(lái)縮放標(biāo)簽的方法。Python代碼如下。

  1. import matplotlib 
  2. import matplotlib.pyplot as plt 
  3. #!pip install squarify 
  4. import squarify  
  5.  
  6. #load data 
  7. sizes=df_final["USD_market_cap"
  8. label=df_final["name"
  9.  
  10. # color scale on the price development  
  11. min and max values 
  12. cmap = matplotlib.cm.RdYlGn #RedYellowGreen 
  13. mini=min(df_final["USD_percent_change_24h"]) 
  14. maxi=max(df_final["USD_percent_change_24h"]) 
  15. norm = matplotlib.colors.Normalize(vmin=mini, vmax=maxi) 
  16. colors = [cmap(norm(value)) for value in df_final["USD_percent_change_24h"]] 
  17.  
  18. # labels in treemap squares 
  19. 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"])] 
  20.  
  21. # make plot 
  22. fig = plt.figure(figsize=(20, 10)) 
  23. ax = fig.add_subplot(111, aspect="auto"
  24. ax = squarify.plot(df_final["USD_market_cap"], color=colors, label=labels,  alpha=.8) 
  25. ax.set_title("Cryptomarket price change last 24 hours\n", fontsize=18) 
  26.  
  27. # plot title and color bar 
  28. img = plt.imshow([df_final["USD_percent_change_24h"]], cmap=cmap) 
  29. img.set_visible(True
  30. fig.colorbar(img, orientation="vertical", shrink=.96) 
  31. fig.text(.76, .9, "Percentage change", fontsize=14) 
  32.  
  33. # if you want to export the figure 
  34. #plt.savefig("cmc_treemaps.png"
  35. plt.show() 

說明:

第1至4行:導(dǎo)入并安裝(如果需要)所需的庫(kù)

第6-8行:加載樹形圖的數(shù)據(jù)

第10-16行:對(duì)價(jià)格變化百分比應(yīng)用顏色編碼的縮放比例

第18-19行:為要顯示的文本創(chuàng)建字符串標(biāo)簽

第21–25行:繪制樹形圖

第27–31行:在側(cè)面應(yīng)用顏色條

第33–35行:顯示樹狀圖,并帶有將其導(dǎo)出為png圖像的選項(xiàng)

創(chuàng)建交互式樹形圖

 

掃碼查看交互式樹形圖效果

繪制樹圖的一種更復(fù)雜的方法是將其激活!使用Plotly可以創(chuàng)建一個(gè)交互式樹狀圖,當(dāng)您在每個(gè)矩形塊上懸停時(shí),它會(huì)顯示有關(guān)每個(gè)矩形塊的詳細(xì)信息。Plotly在后臺(tái)為您完成了大部分工作,從而導(dǎo)致與Squarify相比,更少的代碼行更加精簡(jiǎn)和優(yōu)雅。

  1. #!pip install --upgrade plotly 
  2. import plotly.graph_objects as go 
  3. import plotly.express as px 
  4.  
  5. fig = px.treemap(df_final,  
  6.                  path=['name'],  
  7.                  values='USD_market_cap'
  8.                  color_continuous_scale='RdYlGn'
  9.                  color='USD_percent_change_24h',             
  10.                  ) 
  11. fig.update_layout(title_text='Cryptomarket price change last 24 hours', title_x=0.5) 
  12. fig.show() 

說明:

第1至3行:導(dǎo)入并安裝所需的庫(kù)

第5-10行:繪制樹形圖

第11行:在樹形圖上添加標(biāo)題

第12行:顯示樹狀圖

如何在媒體/網(wǎng)站中嵌入交互式樹圖

想知道您上面看到的嵌入式樹形圖是如何完成的?您可以使用Plotly Studio輕松地做到這一點(diǎn),而好處是您可以直接將Google Colab筆記本與Plotly Studio關(guān)聯(lián)(您需要有一個(gè)帳戶)。只需在下面添加此代碼段,然后使用您的Plotly用戶名和API密鑰即可完成。

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

將您的Plotly樹圖推入/同步到Plotly Studio后,只需將鏈接復(fù)制到Plotly Studio,然后將該鏈接粘貼到Medium中作為嵌入式鏈接,然后按Enter鍵,就可以了!

 

如何在網(wǎng)站上上插入嵌入式鏈接

總結(jié)

 

通過可視化不同矩形和顏色的層次結(jié)構(gòu)數(shù)據(jù),樹形圖是講述故事的好方法。當(dāng)您要按大小順序快速可視化大量數(shù)據(jù),以及可以選擇對(duì)第二維使用不同色調(diào)和顏色強(qiáng)度的選項(xiàng)時(shí),此功能非常有效。但是,樹形圖的一個(gè)缺點(diǎn)是進(jìn)行精確的定量比較可能具有挑戰(zhàn)性。

 

責(zé)任編輯:武曉燕 來(lái)源: 區(qū)塊鏈研究實(shí)驗(yàn)室
相關(guān)推薦

2009-07-28 13:48:28

ASP.NET樹形圖

2022-06-13 10:39:12

JavaScript

2022-04-14 07:57:52

Python代碼熱力圖

2021-02-16 00:23:02

比特幣加密貨幣數(shù)字貨幣

2021-02-01 17:35:47

CommitsGit幣價(jià)先行指標(biāo)

2012-07-09 09:31:53

silverlight

2009-07-03 19:18:04

BTIM服務(wù)應(yīng)用管理

2017-02-28 10:11:14

Mac OSXPython開發(fā)環(huán)境

2020-06-30 20:55:17

PygalPython編程語(yǔ)言

2022-06-17 14:51:16

比特幣數(shù)字技術(shù)支付系統(tǒng)

2022-10-24 09:00:47

畫圖工具程序員XMind

2021-04-29 15:45:47

比特幣加密貨幣貨幣

2012-02-28 10:33:27

Eclipse 3.7Android環(huán)境

2018-11-26 18:45:22

數(shù)據(jù)可視化繪圖可視化

2011-06-03 14:04:11

Android

2011-03-10 14:40:48

LAMP搭建

2025-04-07 08:40:00

Python數(shù)據(jù)結(jié)構(gòu)

2022-05-05 14:16:19

加密貨幣幣安監(jiān)管機(jī)構(gòu)

2009-06-25 16:36:31

JBPM流程圖

2009-03-05 10:10:52

餅圖數(shù)據(jù)庫(kù)JSP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)