1212from ogcore .utils import Inequality
1313
1414
15+ INTEREST_RATE_VARS = {"r_gov" , "r" , "r_p" }
16+
17+
1518def plot_aggregates (
1619 base_tpi ,
1720 base_params ,
@@ -41,7 +44,8 @@ def plot_aggregates(
4144 var_list (list): names of variable to plot
4245 plot_type (string): type of plot, can be:
4346 'pct_diff': plots percentage difference between baseline
44- and reform ((reform-base)/base)
47+ and reform ((reform-base)/base). For interest rates,
48+ percentage point differences are plotted.
4549 'diff': plots difference between baseline and reform
4650 (reform-base)
4751 'levels': plot variables in model units
@@ -73,6 +77,8 @@ def plot_aggregates(
7377 # Check that reform included if doing pct_diff or diff plot
7478 if plot_type == "pct_diff" or plot_type == "diff" :
7579 assert reform_tpi is not None
80+ only_interest_rates = all (v in INTEREST_RATE_VARS for v in var_list )
81+ has_interest_rates = any (v in INTEREST_RATE_VARS for v in var_list )
7682 fig1 , ax1 = plt .subplots ()
7783 if not stationarized :
7884 for v in var_list :
@@ -91,7 +97,12 @@ def plot_aggregates(
9197 plot_var = reform_tpi [v ] - base_tpi [v ]
9298 else :
9399 plot_var = (reform_tpi [v ] - base_tpi [v ]) / base_tpi [v ]
94- ylabel = r"Pct. change"
100+ if only_interest_rates :
101+ ylabel = r"Percentage point change"
102+ elif has_interest_rates :
103+ ylabel = r"Pct. or percentage point change"
104+ else :
105+ ylabel = r"Pct. change"
95106 plt .plot (
96107 year_vec ,
97108 plot_var [start_index : start_index + num_years_to_plot ],
@@ -119,7 +130,7 @@ def plot_aggregates(
119130 ],
120131 label = "Reform " + VAR_LABELS [v ],
121132 )
122- ylabel = r"Model Units"
133+ ylabel = r"Rate" if only_interest_rates else r" Model Units"
123134 elif plot_type == "forecast" :
124135 # Need reform and baseline to ensure plot makes sense
125136 assert reform_tpi is not None
@@ -437,8 +448,8 @@ def plot_gdp_ratio(
437448 p (OG-Core Specifications class): parameters object
438449 var_list (list): names of variable to plot
439450 plot_type (string): type of plot, can be:
440- 'diff': plots difference between baseline and reform
441- (reform-base)
451+ 'diff' or 'pct_diff' : plots percentage point difference
452+ between baseline and reform ratios to GDP (reform-base)
442453 'levels': plot variables in model units
443454 num_years_to_plot (integer): number of years to include in plot
444455 start_year (integer): year to start plot
@@ -453,7 +464,7 @@ def plot_gdp_ratio(
453464 assert isinstance (start_year , (int , np .integer ))
454465 assert isinstance (num_years_to_plot , int )
455466 assert num_years_to_plot <= base_params .T
456- if plot_type == "diff " :
467+ if plot_type != "levels " :
457468 assert reform_tpi is not None
458469 # Make sure both runs cover same time period
459470 if reform_tpi :
@@ -510,7 +521,10 @@ def plot_gdp_ratio(
510521 plot_var [start_index : start_index + num_years_to_plot ],
511522 label = ToGDP_LABELS [v ],
512523 )
513- ylabel = r"Percent of GDP"
524+ if plot_type == "levels" :
525+ ylabel = r"Percent of GDP"
526+ else :
527+ ylabel = r"Percentage points of GDP"
514528 # vertical markers at certain years
515529 if vertical_line_years :
516530 for yr in vertical_line_years :
0 commit comments