|
22 | 22 | # last_metric_df = sg.query_df([last_metric.marketCap, last_metric.treasuryMarketValue, ...])
|
23 | 23 |
|
24 | 24 | # Market Cap indicator
|
25 |
| -mc_fig = go.Figure( |
| 25 | +metric_fig = go.Figure( |
26 | 26 | go.Indicator(
|
27 | 27 | mode="number",
|
28 | 28 | value=sg.query([last_metric.marketCap]),
|
29 | 29 | number={"prefix": "$", "valueformat": ".2s"},
|
30 | 30 | title={"text": "Market Cap"},
|
31 |
| - domain={'y': [0, 1], 'x': [0.25, 0.75]} |
32 |
| - ) |
| 31 | + domain={'y': [0, 0.5], 'x': [0.25, 0.75]} |
| 32 | + ), |
33 | 33 | )
|
34 | 34 |
|
35 |
| -# Net Asset Value / Total Treasury Value ($) indicator |
36 |
| -nav_fig = go.Figure( |
| 35 | +metric_fig.add_trace( |
| 36 | + # Net Asset Value / Total Treasury Value ($) indicator |
37 | 37 | go.Indicator(
|
38 | 38 | mode="number",
|
39 | 39 | value=sg.query([last_metric.treasuryMarketValue]),
|
40 | 40 | number={"prefix": "$", "valueformat": ".2s"},
|
41 | 41 | title={"text": "Net Asset Value"},
|
42 |
| - domain={'y': [0, 1], 'x': [0.25, 0.75]} |
| 42 | + domain={'y': [0.5, 1], 'x': [0.25, 0.75]} |
43 | 43 | )
|
44 | 44 | )
|
45 | 45 |
|
|
116 | 116 | {"bucket": "Treasury Holdings", "value": treasury_value, "target": 0.48}
|
117 | 117 | ]
|
118 | 118 | green_ratio_df = pd.DataFrame.from_records(green_ratio_data)
|
| 119 | +order = [ |
| 120 | + 'Op Ex', 'Carbon Forwards', |
| 121 | + 'Carbon Backing', 'Treasury Holdings' |
| 122 | +] |
| 123 | + |
119 | 124 |
|
120 |
| -# TODO: style colors based on KIP |
121 | 125 | # TODO: style holdings as $xx.yy[m/k] (i.e. human-formatted like indicators)
|
122 | 126 | # TODO: visualize targets in some way
|
123 | 127 | # TODO: load targets from Google Sheet for ease of maintenance
|
|
129 | 133 | 'Carbon Forwards': '#6fff93',
|
130 | 134 | 'Carbon Backing': '#00cc33',
|
131 | 135 | 'Treasury Holdings': '#ddf641'
|
132 |
| - } |
| 136 | + }, |
| 137 | + category_orders={'bucket': order}, |
| 138 | + title="Green Ratio: Current", |
| 139 | +) |
| 140 | +green_ratio_fig.update_layout( |
| 141 | + title_x=0.5, |
| 142 | + legend=dict( |
| 143 | + yanchor='bottom', |
| 144 | + y=-.5, |
| 145 | + xanchor='auto', |
| 146 | + x=.5 |
| 147 | + ) |
133 | 148 | )
|
134 | 149 |
|
135 |
| -# target_indicators = |
| 150 | +green_ratio_target_fig = px.pie( |
| 151 | + green_ratio_df, values="target", |
| 152 | + names="bucket", hole=.3, color="bucket", |
| 153 | + color_discrete_map={ |
| 154 | + 'Op Ex': '#f2ae00', |
| 155 | + 'Carbon Forwards': '#6fff93', |
| 156 | + 'Carbon Backing': '#00cc33', |
| 157 | + 'Treasury Holdings': '#ddf641' |
| 158 | + }, |
| 159 | + category_orders={'bucket': order}, |
| 160 | + title="Green Ratio: Target", |
| 161 | +) |
| 162 | +green_ratio_target_fig.update_layout( |
| 163 | + title_x=0.5, |
| 164 | + legend=dict( |
| 165 | + yanchor='bottom', |
| 166 | + y=-.5, |
| 167 | + xanchor='auto', |
| 168 | + x=.5 |
| 169 | + ) |
| 170 | +) |
136 | 171 |
|
137 | 172 | layout = dbc.Container([
|
138 | 173 | html.Div([
|
139 | 174 | dbc.Row([
|
140 | 175 | dbc.Col([
|
141 |
| - dcc.Graph(figure=mc_fig) |
142 |
| - ], xs=12, sm=12, md=12, lg=3, xl=3), |
143 |
| - dbc.Col([ |
144 |
| - dcc.Graph(figure=nav_fig) |
145 |
| - ], xs=12, sm=12, md=12, lg=3, xl=3), |
| 176 | + dcc.Graph(figure=metric_fig) |
| 177 | + ], xs=12, sm=12, md=12, lg=4, xl=4), |
146 | 178 | dbc.Col([
|
147 | 179 | dcc.Graph(figure=green_ratio_fig)
|
148 |
| - ], xs=12, sm=12, md=12, lg=6, xl=6), |
| 180 | + ], xs=12, sm=6, md=6, lg=4, xl=4), |
| 181 | + dbc.Col([ |
| 182 | + dcc.Graph(figure=green_ratio_target_fig) |
| 183 | + ], xs=12, sm=6, md=6, lg=4, xl=4) |
149 | 184 | ]),
|
150 | 185 | ], className='center'),
|
151 | 186 | ], id='page_content_hud', fluid=True)
|
0 commit comments