How can I make a Treemap chart in Python Plolty with discrete colors

I am working on a Tree Map graph in Plotly, I want to set the color of each sector of the graph based on some negative and positive values. The brightness and darkness of those colors should also change based on that value. For example, all the sectors with negative values should be in red, all the positive value sectors should be in green color and the brightness of red and green color should depend on how negative or positive the value is.

At the moment this is what my TreeMap looks like:

As you can see in each sector there is a value of open_Pl, this value can be negative or positive, I want those blocks colored in red whose open_pl value is negative and those blocks should be colored green whose values are positive, and also the brightness should depend on how positive of negative the value is.

My dataframe looks like this:

Here is how I have written my treeMap code:

ret = pd.DataFrame(latest_entries, columns= ['entry_id', 'symbol', 'open_pl', 'position_percentage', 'open_pl_percentage'
    , 'parent'])

    colorscale=[
    [0, "rgb(246,53,57,255)"],
    [0.1, "rgb(246,53,57,255)"],

    [0.1, "rgb(246,53,57,255)"],
    [0.2, "rgb(204,65,67)"],


    [0.2, "rgb(204,65,67)"],
    [0.3, "rgb(200,64,64)"],

    [0.3, "rgb(200,64,64)"],
    [0.4, "rgb(170,33,33)"],

    [0.4, "rgb(170,33,33)"],
    [0.5, "rgb(170,33,33)"],

    [0.5, "rgb(170,33,33)"],
    [0.6, "rgb(59,91,80,255)"],

    [0.6, "rgb(59,91,80,255)"],
    [0.7, "rgb(33,94,44)"],

    [0.7, "rgb(33,94,44)"],
    [0.8, "rgb(81,134,81)"],

    [0.8, "rgb(81,134,81)"],
    [0.9, "rgb(54,166,85)"],

    [0.9, "rgb(54,166,85)"],
    [1.0, "rgb(54,166,85)"]
]

    trace = go.Treemap(
    labels = ret['symbol'],
    parents = ret['parent'],
    values =  ret['position_percentage'],
    root_color="lightgrey",
    marker=dict(
    colors=ret['open_pl'],
    colorscale=colorscale,
    cmax= np.max(ret['open_pl']),
    cmin= np.min(ret['open_pl']),
    cmid = np.mean(ret['open_pl']),
    showscale=True
    ),
    hovertemplate='<b>%{label} </b> <br> position percentage: %{value}',
    customdata = np.column_stack([ret['open_pl']]),
    texttemplate = "<b>%{label}</b><br>Position_Percent:%{value:.3f}%<br>Open_PL:$%{customdata[0]}"
    )
    fig = go.Figure(trace)