Generates stacked bar charts to visualize value compositions across multiple dimensions. Supports both stacked and unstacked layouts for decomposition analysis, with full control over grouping, faceting, top-impact filtering, and export styling.
Input Data
Usage
stack_plot(
data,
filter_var = NULL,
x_axis_from,
stack_value_from,
split_by = NULL,
panel_var = "Experiment",
variable_col = "Variable",
unit_col = "Unit",
desc_col = "Description",
invert_axis = FALSE,
separate_figure = FALSE,
show_total = TRUE,
unstack_plot = FALSE,
top_impact = NULL,
var_name_by_description = FALSE,
add_var_info = FALSE,
output_path = NULL,
export_picture = TRUE,
export_as_pdf = FALSE,
export_config = NULL,
plot_style_config = NULL
)
Arguments
- data
A data frame or list of data frames containing GTAP results.
- filter_var
NULL, a vector, a data frame, or a named list specifying filtering conditions. For example:
list(Variable = c("EV", "qgdp"), REG = c("USA", "THA"))
.- x_axis_from
Character. Column name used for the x-axis.
- stack_value_from
Character. Column containing stack component categories (e.g.,
"COMM"
for commodities).- split_by
Character or vector.
Column(s) used to split plots by (e.g.,
"REG"
orc("COMM", "REG")
).If
NULL
, a single aggregated plot is generated.
- panel_var
Character. Column for panel facets. Default is
"Experiment"
.- variable_col
Character. Column name for variable codes. Default is
"Variable"
.- unit_col
Character. Column name for units. Default is
"Unit"
.- desc_col
Character. Column name for variable descriptions. Default is
"Description"
.Plot Behavior
- invert_axis
Logical. If
TRUE
, flips the plot orientation (horizontal bars). Default isFALSE
.- separate_figure
Logical. If
TRUE
, generates a separate plot for each value inpanel_var
. Default isFALSE
.- show_total
Logical. If
TRUE
, displays total values above stacked bars. Default isTRUE
.- unstack_plot
Logical. If
TRUE
, creates separate bar plots for eachx_axis_from
value instead of stacking. Default isFALSE
.- top_impact
Numeric or
NULL
. If specified, shows only the top N impactful values;NULL
shows all.Variable Display
- var_name_by_description
Logical. If
TRUE
, uses descriptions instead of variable codes in titles. Default isFALSE
.- add_var_info
Logical. If
TRUE
, appends variable codes in parentheses after the description. Default isFALSE
.Export Settings
- output_path
Character. Directory to save plots. If
NULL
, plots are returned but not saved.- export_picture
Logical. If
TRUE
, exports plots as PNG images. Default isTRUE
.- export_as_pdf
Logical or
"merged"
.FALSE
(default): disables PDF export.TRUE
: exports each plot as a separate PDF file."merged"
: combines all plots into a single PDF file.
- export_config
List. Export options including dimensions, DPI, and background. See
create_export_config
orget_all_config
.Styling
- plot_style_config
List. Custom plot appearance settings. See
create_plot_style
orget_all_config
.
Value
A ggplot object or a named list of ggplot objects depending on the separate_figure
setting.
If export_picture
or export_as_pdf
is enabled, the plots are also saved to output_path
.
Examples
# Load Data:
input_path <- system.file("extdata/in", package = "GTAPViz")
har.plot.data <- readRDS(file.path(input_path, "har.plot.data.rds"))
# Prepare Dataframe
welfare.decomp <- har.plot.data[["A"]]
# Plot
plotC <- stack_plot(
# === Input Data ===
data = welfare.decomp,
filter_var = list(Region = "Oceania"),
x_axis_from = "Region",
stack_value_from = "COLUMN",
split_by = FALSE,
panel_var = "Experiment",
variable_col = "Variable",
unit_col = "Unit",
desc_col = "Description",
# === Plot Behavior ===
invert_axis = FALSE,
separate_figure = FALSE,
show_total = TRUE,
unstack_plot = FALSE,
top_impact = NULL,
# === Variable Display ===
var_name_by_description = TRUE,
add_var_info = FALSE,
# === Export Settings ===
output_path = NULL,
export_picture = FALSE,
export_as_pdf = FALSE,
export_config = create_export_config(width = 28, height = 15),
# === Styling ===
plot_style_config = create_plot_style(
color_tone = "gtap",
panel_rows = 2,
panel_cols = NULL,
show_legend = TRUE,
show_axis_titles_on_all_facets = FALSE
)
)