From 7c7df2fd02f1827fc41165b570c7318cca247fe8 Mon Sep 17 00:00:00 2001 From: "j.aschauer" Date: Wed, 13 Dec 2023 10:54:59 +0100 Subject: [PATCH 1/4] change index names in cost dataframes --- app/layout_elements.py | 6 +++++- app/ptxboa_functions.py | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/layout_elements.py b/app/layout_elements.py index 509363fa..94e230e7 100644 --- a/app/layout_elements.py +++ b/app/layout_elements.py @@ -4,7 +4,7 @@ import streamlit as st from app.plot_functions import create_bar_chart_costs -from app.ptxboa_functions import config_number_columns +from app.ptxboa_functions import change_index_names, config_number_columns def display_costs( @@ -50,6 +50,10 @@ def display_costs( ) if sort_ascending: df_res = df_res.sort_values(["Total"], ascending=True) + + # fix index names + change_index_names(df_res) + # create graph: fig = create_bar_chart_costs( df_res, diff --git a/app/ptxboa_functions.py b/app/ptxboa_functions.py index fd2594c1..b136b425 100644 --- a/app/ptxboa_functions.py +++ b/app/ptxboa_functions.py @@ -681,3 +681,29 @@ def get_region_from_subregion(subregion: str) -> str: """ region = subregion.split(" (")[0] return region + + +def change_index_names(df: pd.DataFrame, mapping: dict | None = None) -> pd.DataFrame: + """ + Change the index name of cost results or input data dataframes. + + Only call this just befor you display any data, not before any transformation + or pivot actions. + + https://stackoverflow.com/a/19851521 + + If mapping is None, default mappings for input_data and cost_results data is + used. + """ + if mapping is None: + mapping = { + "process_code": "Process", + "source_region_code": "Source Region", + "region": "Source Region", + "scenario": "Scenario", + "res_gen": "RE Source", + "chain": "Chain", + } + new_idx_names = [mapping.get(i, i) for i in df.index.names] + df.index.names = new_idx_names + return df From 077938c36a282fc8ee0176a8fda4bf719880e6ed Mon Sep 17 00:00:00 2001 From: "j.aschauer" Date: Wed, 13 Dec 2023 12:05:35 +0100 Subject: [PATCH 2/4] display nice index names in input data --- app/ptxboa_functions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/ptxboa_functions.py b/app/ptxboa_functions.py index da86f78a..ecf25aee 100644 --- a/app/ptxboa_functions.py +++ b/app/ptxboa_functions.py @@ -641,6 +641,8 @@ def display_and_edit_input_data( missing_index_value = None column_config = get_column_config() + df = change_index_names(df) + # if editing is enabled, store modifications in session_state: if st.session_state["edit_input_data"]: if f"{key}_number" not in st.session_state: From bd65d977a06144d67acb205fc5abfff4e6e1817c Mon Sep 17 00:00:00 2001 From: "j.aschauer" Date: Wed, 13 Dec 2023 12:11:12 +0100 Subject: [PATCH 3/4] remove xlabels from regional data boxplots --- app/tab_deep_dive_countries.py | 1 + app/tab_input_data.py | 1 + 2 files changed, 2 insertions(+) diff --git a/app/tab_deep_dive_countries.py b/app/tab_deep_dive_countries.py index 92bccbe8..fc8fd6f8 100644 --- a/app/tab_deep_dive_countries.py +++ b/app/tab_deep_dive_countries.py @@ -94,4 +94,5 @@ def content_deep_dive_countries( st.markdown("**Regional Distribution**") with c_1_1: fig = px.box(df) + fig.update_layout(xaxis_title=None) st.plotly_chart(fig, use_container_width=True) diff --git a/app/tab_input_data.py b/app/tab_input_data.py index c9c66729..73d1ef16 100644 --- a/app/tab_input_data.py +++ b/app/tab_input_data.py @@ -72,6 +72,7 @@ def content_input_data(api: PtxboaAPI) -> None: with c_1_1: # create plot: fig = px.box(df) + fig.update_layout(xaxis_title=None) st.plotly_chart(fig, use_container_width=True) with st.container(border=True): From 3eb6f9a1b24b66b52d75006dfb1fec57a6b729de Mon Sep 17 00:00:00 2001 From: "j.aschauer" Date: Wed, 13 Dec 2023 12:22:16 +0100 Subject: [PATCH 4/4] rename flow_code to "Carrier/Material" --- app/ptxboa_functions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/ptxboa_functions.py b/app/ptxboa_functions.py index ecf25aee..606697a4 100644 --- a/app/ptxboa_functions.py +++ b/app/ptxboa_functions.py @@ -770,6 +770,7 @@ def change_index_names(df: pd.DataFrame, mapping: dict | None = None) -> pd.Data "scenario": "Scenario", "res_gen": "RE Source", "chain": "Chain", + "flow_code": "Carrier/Material", } new_idx_names = [mapping.get(i, i) for i in df.index.names] df.index.names = new_idx_names