首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创造红色为负值,绿色为正值的树状环境?

如何创造红色为负值,绿色为正值的树状环境?
EN

Stack Overflow用户
提问于 2022-09-26 09:52:40
回答 1查看 56关注 0票数 0

这是我的代码,我的结果似乎不对,结果是正值​​是绿色的,红色是负值的,只有2个颜色标度是绿色和红色的。

我该怎么解决呢?我很希望你的帮助

代码语言:javascript
复制
data = pd.DataFrame(
    {
        "Timestamp":['14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022'],
        "Name":['Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase',
        'Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase',
        'Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase'],

        "Stablecoin":['USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT',
        'USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC',
        'BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD'],

        "Value_USDT":[7.44,6.54,5.45,3,2,1.45,3,2,1,3,2,1,1,2,1,2,
        7,6,5,3,2,1,3,2,1,3,2,1,1,2,1,2,
        10.08,0,5,0,7,0,0,0,0,3,2,1,4,0,0,2],
        'percentage':[7.87,6.78,-5.08,-0.9,2.87,1.87,-3.78,2.87,1.6,3.67,-2.4,1.43,1.34,2.23,1.34,2.43,
        7.78,6.43,5.43,3.45,2,1,3,2,-1.98,3,2,-1.76,1,2,1,2,
        10.08,0.09,-5,0.07,7,0.76,0.67,0.87,0.56,-3,2,-1.65,4,0.56,0.65,2]
    }
)
data['all'] = 'all'
def set_colorscale(z, colors):
    if len(colors) !=3:
        raise ValueError("")
    neg=z[np.where(z<0)]
    pos=z[np.where(z>0)]    
    a, c = neg.min(), neg.max()
    d, b = pos.min(), pos.max()
    bvals= [a, c/2, d/2, b]
    nvals = [(v-bvals[0])/(bvals[-1]-bvals[0]) for v in bvals] 
    dcolorscale = []
    for k in range(len(colors)):
        dcolorscale.extend([[nvals[k], colors[k]], [nvals[k+1], colors[k]]])
    return dcolorscale  

z = np.array(data['percentage'])
pl_colorscale= set_colorscale(z, ["#DC3714", "#C0C0C0", "#19BD1B"])
fig = px.treemap(data, path=[px.Constant('all'),'Stablecoin','Name','percentage'],values='Value_USDT')
fig.update_traces(textinfo = "label",textposition="middle center",hovertemplate='labels=%{label}<br>value=%{value}<extra></extra>')
fig.update_traces(hovertext=['percentage'])
fig.update_traces(marker=dict(
    colors=data['percentage'],
    colorscale=pl_colorscale,
    showscale=True
))
fig.update_layout(width=1400, height=550,title="TreeMap stablecoin")
fig.show()

这是我的代码,我不知道如何使正值变成绿色,似乎在我的代码中结果是错误的

如何将负值固定为红色

EN

回答 1

Stack Overflow用户

发布于 2022-09-26 10:38:27

我认为您可以为percentage设置条件,并将其用于颜色映射。请参阅以下代码:

代码语言:javascript
复制
import pandas as pd
import plotly.express as px
import numpy as np

data = pd.DataFrame(
    {
        "Timestamp":['14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022','14-02-2022',
        '14-02-2022','14-02-2022','14-02-2022','14-02-2022'],
        "Name":['Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase',
        'Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase',
        'Binance','OKX','Kucoin','Houbi','FTX','Bitfinex','Bitmex','Bittrex','CoinList','BNB_US','MEXC','Crypto','Gate','Bitstamp','FTX_US','Coinbase'],

        "Stablecoin":['USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT','USDT',
        'USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC','USDC',
        'BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD','BUSD'],

        "Value_USDT":[7.44,6.54,5.45,3,2,1.45,3,2,1,3,2,1,1,2,1,2,
        7,6,5,3,2,1,3,2,1,3,2,1,1,2,1,2,
        10.08,0,5,0,7,0,0,0,0,3,2,1,4,0,0,2],
        'percentage':[7.87,6.78,-5.08,-0.9,2.87,1.87,-3.78,2.87,1.6,3.67,-2.4,1.43,1.34,2.23,1.34,2.43,
        7.78,6.43,5.43,3.45,2,1,3,2,-1.98,3,2,-1.76,1,2,1,2,
        10.08,0.09,-5,0.07,7,0.76,0.67,0.87,0.56,-3,2,-1.65,4,0.56,0.65,2]
    }
)
data['all'] = 'all'
condition = [data['percentage']>0,
            data['percentage']==0,
            data['percentage']<0]

choices = ['A','B','C']
data['Condition'] = np.select(condition,choices,default='D')

fig = px.treemap(data, path=[px.Constant('all'),'Stablecoin','Name','percentage'],
                 values='Value_USDT',color='Condition',
                 color_discrete_map={'(?)':'black','A':"#19BD1B", 
                                     'B':"#C0C0C0",
                                     'C':"#DC3714",
                                     'D':'#AB63FA'})
fig.update_traces(textinfo = "label",
                  textposition="middle center",
                  hovertemplate='labels=%{label}<br>value=%{value}<extra></extra>')
fig.update_traces(hovertext=['percentage'])
fig.update_layout(width=1400, height=550,title="TreeMap stablecoin")
fig.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73852399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档