実現したいこと
Plotlyのtreemapで、暗号資産のヒートマップを作りたいです。
発生している問題・分からないこと
添付画像が作成中のヒートマップです。
このヒートマップの背景色で黒くなっている部分を白色に変更したいです。
該当のソースコード
python
1import requests 2import pandas as pd 3import plotly.express as px 4import plotly.io as pio 5 6pio.renderers.default = "browser" 7 8# CoinGecko API - TOP100取得 9params = { 10 "vs_currency": "usd", 11 "order": "market_cap_desc", 12 "per_page": 100, 13 "page": 1, 14 "price_change_percentage": "24h" 15} 16response = requests.get("https://api.coingecko.com/api/v3/coins/markets", params=params) 17data = response.json() 18 19# DataFrame化 20df = pd.DataFrame([{ 21 "name": coin["name"], 22 "symbol": coin["symbol"].upper(), 23 "price": coin["current_price"], 24 "market_cap": coin["market_cap"], 25 "change_24h": coin["price_change_percentage_24h"] 26} for coin in data]) 27 28# 除外リスト 29stablecoins = [ 30 "USDT", "USDC", "DAI", "TUSD", "BUSD", "FDUSD", "GUSD", "LUSD", "USDP", "EURS", "EURT" 31] 32derivatives_tokens = [ 33 "WBTC", "WETH", "STETH", "RETH", "CBETH", "SETH", "MIMATIC", "AXLUSDC", 34 "SUSDT", "WSOL", "WBNB", "WAVAX", "WFTM", "REUSD", "RSV", "SOLVBTC", 35 "CBBTC", "WSTETH", "RSETH", "WEETH", "BNSOL" 36] 37exclude_specific = ["LBTC", "XAUT"] 38 39# フィルタリング 40df = df[ 41 (~df["symbol"].isin(stablecoins)) & 42 (~df["symbol"].isin(derivatives_tokens)) & 43 (~df["symbol"].isin(exclude_specific)) 44] 45 46# スケーリング(全体 market_cap ベース) 47df["scaled_value"] = df["market_cap"] / df["market_cap"].sum() 48 49# ラベル整形 50df["label"] = df.apply( 51 lambda row: f'{row["symbol"]}<br>${row["price"]:,}<br>{row["change_24h"]:.2f}%', 52 axis=1 53) 54 55# ヒートマップ描画(カテゴリ階層なし) 56fig = px.treemap( 57 df, 58 path=["label"], 59 values="scaled_value", 60 color="change_24h", 61 color_continuous_scale="RdYlGn", 62 title="暗号資産ヒートマップ(時価総額ベース)" 63) 64 65fig.show()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
コード末尾に以下のコードを加えてみたが変わらない。
fig.update_layout(
paper_bgcolor='white',
plot_bgcolor='white',
treemapcolorway=["#ffffff"]
)
補足
特になし
Plotly のコミュニティフォーラムで同様の問題が報告されています。
Plotly Community Forum: Change root container color
https://community.plotly.com/t/change-root-container-color
以下のコメントに書かれている様に、color と color_continuous_scale を指定するとコンテナの root color を変更できない様です。
https://community.plotly.com/t/change-root-container-color/79991/4
> Adding px.Constant(" "), will change the colour but you can't specify it as it's from the colour scheme.
> It just doesn't work with color_continuous_scale. You can either make it using a discrete colour sequence or choose a different colour scheme.
書かれてある通り、ダミーで px.Constant(" ") を追加すれば root color が変更されますが、任意の色には変更できません。
fig = px.treemap(
df,
# path=["label"],
path=[px.Constant(" "), "label"],
values="scaled_value",
color="change_24h",
color_continuous_scale="RdYlGn",
title="暗号資産ヒートマップ(時価総額ベース)"
)
コメントありがとうございます。
実際に試し、仰る通り色の変更はできるものの、任意の色には指定できないこと確認いたしました。
早々に、かつ大変わかりやすく解説いただきましてありがとうございました。
ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
