This function allows embedding of interactive or static plots based on various types of data using tidyselect syntax for variable selection.
Usage
makeme(
data,
dep = tidyselect::everything(),
indep = NULL,
type = c("cat_plot_html", "int_plot_html", "cat_table_html", "int_table_html",
"sigtest_table_html", "cat_prop_plot_docx", "cat_freq_plot_docx", "int_plot_docx"),
...,
require_common_categories = TRUE,
crowd = c("all"),
mesos_var = NULL,
mesos_group = NULL,
simplify_output = TRUE,
hide_for_crowd_if_all_na = TRUE,
hide_for_crowd_if_valid_n_below = 0,
hide_for_crowd_if_category_k_below = 2,
hide_for_crowd_if_category_n_below = 0,
hide_for_crowd_if_cell_n_below = 0,
hide_for_all_crowds_if_hidden_for_crowd = NULL,
hide_indep_cat_for_all_crowds_if_hidden_for_crowd = FALSE,
add_n_to_dep_label = FALSE,
add_n_to_indep_label = FALSE,
add_n_to_label = FALSE,
add_n_to_category = FALSE,
totals = FALSE,
categories_treated_as_na = NULL,
label_separator = " - ",
showNA = c("ifany", "always", "never"),
data_label = c("percentage_bare", "percentage", "proportion", "count"),
html_interactive = TRUE,
hide_axis_text_if_single_variable = TRUE,
hide_label_if_prop_below = 0.01,
inverse = FALSE,
vertical = FALSE,
digits = 0,
data_label_decimal_symbol = ".",
x_axis_label_width = 25,
strip_width = 25,
sort_by = ".upper",
descend = TRUE,
labels_always_at_top = NULL,
labels_always_at_bottom = NULL,
table_wide = TRUE,
table_main_question_as_header = FALSE,
n_categories_limit = 12,
translations = list(last_sep = " and ", table_heading_N = "Total (N)",
table_heading_data_label = "%", add_n_to_dep_label_prefix = " (N = ",
add_n_to_dep_label_suffix = ")", add_n_to_indep_label_prefix = " (N = ",
add_n_to_indep_label_suffix = ")", add_n_to_label_prefix = " (N = ",
add_n_to_label_suffix = ")", add_n_to_category_prefix = " (N = [",
add_n_to_category_infix = ",", add_n_to_category_suffix = "])", by_total =
"Everyone", sigtest_variable_header_1 = "Var 1", sigtest_variable_header_2 = "Var 2",
crowd_all = "All",
crowd_target = "Target", crowd_others = "Others"),
plot_height = 15,
colour_palette = NULL,
colour_2nd_binary_cat = "#ffffff",
colour_na = "grey",
label_font_size = 6,
main_font_size = 6,
strip_font_size = 6,
legend_font_size = 6,
font_family = "sans",
path = NULL,
docx_template = NULL
)
Arguments
- data
Your data.frame/tibble or srvyr-object (experimental)
data.frame
// requiredThe data to be used for plotting.
- dep, indep
Variable selections
<
tidyselect
> // Default:NULL
, meaning everything for dep, nothing for indep.Columns in
data
.dep
is compulsory.- type
Kind of output
scalar<character>
// default:"cat_plot_html"
(optional
)For a list of registered types in your session, use
get_makeme_types()
.- ...
Dynamic dots
Arguments forwarded to the corresponding functions that create the elements.
- require_common_categories
Check common categories
scalar<logical>
// default:NULL
(optional
)Whether to check if all items share common categories.
- crowd
Which group(s) to display results for
vector<character>
// default:c("target", "others", "all")
(optional
)Choose whether to produce results for target (mesos) group, others, all, or combinations of these.
- mesos_var
Variable in
data
indicating groups to tailor reports forscalar<character>
// default:NULL
(optional
)Column name in data indicating the groups for which mesos reports will be produced.
- mesos_group
scalar<character>
// default:NULL
(optional
)String, target group.
- simplify_output
scalar<logical>
// default:TRUE
If TRUE, a list output with a single output element will return the element itself, whereas list with multiple elements will return the list.
- hide_for_crowd_if_all_na
Hide variable from output if containing all NA
scalar<boolean>
// default:TRUE
Whether to remove all variables (in particular useful for mesos) if all values are NA
- hide_for_crowd_if_valid_n_below
Hide variable if variable has < n observations
scalar<integer>
// default:0
Whether to hide a variable for a crowd if variable contains fewer than n observations (always ignoring NA).
- hide_for_crowd_if_category_k_below
Hide variable if < k categories
scalar<integer>
// default:2
Whether to hide a variable for a crowd if variable contains fewer than k used categories (always ignoring NA). Defaults to
2
because a unitary plot/table is rarely informative.- hide_for_crowd_if_category_n_below
Hide variable if having a category with < n observations
scalar<integer>
// default:0
Whether to hide a variable for a crowd if variable contains a category with less than n observations (ignoring NA) Cells with a 0 count is not considered as these are usually not a problem for anonymity.
- hide_for_crowd_if_cell_n_below
Hide variable if having a cell with < n
scalar<integer>
// default:0
Whether to hide a variable for a crowd if the combination of dep-indep results in a cell with less than n observations (ignoring NA). Cells with a 0 count is not considered as these are usually not a problem for anonymity.
Conditional hiding
scalar<character>
// default:NULL
(optional
)Select one of the
crowd
output groups. If selected, will hide a variable across allcrowd
-outputs if it for some reason is not displayed forhide_for_all_if_hidden_for_crowd
. For instance, say:crowd = c("target", "others"), hide_variable_if_all_na = TRUE,
hide_for_all_if_hidden_for_crowd = "target"
will hide variables from both target and others-outputs if all are NA in the target-group.
Conditionally hide independent categories
scalar<logical>
// default:FALSE
If
hide_for_all_crowds_if_hidden_for_crowd
is specified, should categories of theindep
variable(s) be hidden for a crowd if it does not exist for the crowds specified inhide_for_all_crowds_if_hidden_for_crowd
? This is useful when e.g.indep
is academic disciplines,mesos_var
is institutions, and a specific institution is not interested in seeing academic disciplines they do not offer themselves.- add_n_to_dep_label, add_n_to_indep_label
Add N= to the variable label
scalar<logical>
// default:FALSE
(optional
)For some plots and tables it is useful to attach the
"N="
to the end of the label of the dependent and/or independent variable. Whether it isN
orN_valid
depends on yourshowNA
-setting. See alsotranslations$add_n_to_dep_label_prefix
,translations$add_n_to_dep_label_suffix
,translations$add_n_to_indep_label_prefix
,translations$add_n_to_indep_label_suffix
.- add_n_to_label
Add N= to the variable label of both dep and indep
scalar<logical>
// default:FALSE
(optional
)For some plots and tables it is useful to attach the
"N="
to the end of the label. Whether it isN
orN_valid
depends on yourshowNA
-setting. See alsotranslations$add_n_to_label_prefix
andtranslations$add_n_to_label_suffix
.- add_n_to_category
Add N= to the category
scalar<logical>
// default:FALSE
(optional
)For some plots and tables it is useful to attach the
"N="
to the end of the category. This will likely produce a range across the variables, hence an infix (comma) between the minimum and maximum can be specified. Whether it isN
orN_valid
depends on yourshowNA
-setting. See alsotranslations$add_n_to_category_prefix
,translations$add_n_to_category_infix
, andtranslations$add_n_to_category_suffix
.- totals
Include totals
scalar<logical>
// default:FALSE
(optional
)Whether to include totals in the output.
- categories_treated_as_na
NA categories
vector<character>
// default:NULL
(optional
)Categories that should be treated as NA.
- label_separator
How to separate main question from sub-question
scalar<character>
// default:NULL
(optional
)Separator for main question from sub-question.
- showNA
Show NA categories
vector<character>
// default:c("ifany", "always", "never")
(optional
)Choose whether to show NA categories in the results.
- data_label
Data label
scalar<character>
// default:"proportion"
(optional
)One of "proportion", "percentage", "percentage_bare", "count", "mean", or "median".
- html_interactive
Toggle interactive plot
scalar<logical>
// default:TRUE
(optional
)Whether the plot is to be interactive (ggiraph) or static (ggplot2).
- hide_axis_text_if_single_variable
Hide y-axis text if just a single variable
scalar<boolean>
// default:FALSE
(optional
)Whether to hide text on the y-axis label if just a single variable.
- hide_label_if_prop_below
Hide label threshold
scalar<numeric>
// default:NULL
(optional
)Whether to hide label if below this value.
- inverse
Flag to swap x-axis and faceting
scalar<logical>
// default:FALSE
(optional
)If TRUE, swaps x-axis and faceting.
- vertical
Display plot vertically
scalar<logical>
// default:FALSE
(optional
)If TRUE, display plot vertically.
- digits
Decimal places
scalar<integer>
// default:0L
(optional
)Number of decimal places.
- data_label_decimal_symbol
Decimal symbol
scalar<character>
// default:"."
(optional
)Decimal marker, some might prefer a comma ',' or something else entirely.
- x_axis_label_width, strip_width
Label width of x-axis and strip texts in plots
scalar<integer>
// default:20
(optional
)Width of the labels used for the categorical column names in x-axis texts and strip texts.
- sort_by
What to sort output by
vector<character>
// default:NULL
(optional
)Sort output (and collapse if requested). When using
indep
-argument, sorting differs between ordered factors and unordered factors: Ordering of ordered factors is always respected in output. Unordered factors will be reordered bysort_by
. Currently, this works best for a singledep
.- NULL
No sorting.
- ".top"
The proportion for the highest category available in the variable.
- ".upper"
The sum of the proportions for the categories above the middle category.
- ".mid_upper"
The sum of the proportions for the categories including and above the middle category.
- ".mid_lower"
The sum of the proportions for the categories including and below the middle category.
- ".lower"
The sum of the proportions for the categories below the middle category.
- ".bottom"
The proportions for the lowest category available in the variable.
- ".variable_label"
Sort by the variable labels.
- ".id"
Sort by the variable names.
- ".by_group"
The groups of the by argument.
- character()
Character vector of category labels to sum together.
- descend
Sorting order
scalar<logical>
// default:FALSE
(optional
)Reverse sorting of
sort_by
in figures and tables. Seearrange_section_by
for sorting of report sections.- labels_always_at_top, labels_always_at_bottom
Top/bottom variables
vector<character>
// default:NULL
(optional
)Column names in
data
that should always be placed at the top or bottom of figures/tables.- table_wide
Pivot table wider
scalar<logical>
// default:FALSE
(optional
)Whether to pivot table wider.
- table_main_question_as_header
Table main question as header
scalar<logical>
// default:FALSE
(optional
)Whether to include the main question as a header in the table.
- n_categories_limit
Limit for cat_table_ wide format
scalar<integer>
// default:12
(optional
)If there are more than this number of categories in the categorical variable, cat_table_* will have a long format instead of wide format.
- translations
Localize your output
list<character>
A list of translations where the name is the code and the value is the translation. See the examples.
- plot_height
DOCX-setting
scalar<numeric>
// default:12
(optional
)DOCX plots need a height, which currently cannot be set easily with a Quarto chunk option.
- colour_palette
Colour palette
vector<character>
// default:NULL
(optional
)Must contain at least the number of unique values (including missing) in the data set.
- colour_2nd_binary_cat
Colour for second binary category
scalar<character>
// default:"#ffffff"
(optional
)Colour for the second category in binary variables. Often useful to hide this.
- colour_na
Colour for NA category
scalar<character>
// default:NULL
(optional
)Colour as a single string for NA values, if showNA is "ifany" or "always".
- main_font_size, label_font_size, strip_font_size, legend_font_size
Font sizes
scalar<integer>
// default:6
(optional
)ONLY FOR DOCX-OUTPUT. Other output is adjusted using e.g. ggplot2::theme() or set with a global theme (ggplot2::theme_set()). Font sizes for general text (6), data label text (3), strip text (6) and legend text (6).
- font_family
Font family
scalar<character>
// default:"sans"
(optional
)Word font family. See officer::fp_text.
- path
Output path for DOCX
scalar<character>
// default:NULL
(optional
)Path to save docx-output.
- docx_template
Filename or rdocx object
scalar<character>|<rdocx>-object
// default:NULL
(optional
)Can be either a valid character path to a reference Word file, or an existing rdocx-object in memory.
Examples
makeme(
data = ex_survey,
dep = b_1:b_3
)
makeme(
data = ex_survey,
dep = b_1, indep = x1_sex
)
makeme(
data = ex_survey,
dep = b_1:b_3, indep = c(x1_sex, x2_human),
type = "sigtest_table_html"
)
#> Var 1 Var 2 .bi_test .p_value n_valid_Males
#> 1 b_1 x1_sex Chi-squared Goodness-of-Fit Test 0.728 151
#> 2 b_1 x2_human Chi-squared Goodness-of-Fit Test 0.536 NA
#> 3 b_2 x1_sex Chi-squared Goodness-of-Fit Test 0.447 151
#> 4 b_2 x2_human Chi-squared Goodness-of-Fit Test 0.955 NA
#> 5 b_3 x1_sex Chi-squared Goodness-of-Fit Test 0.850 151
#> 6 b_3 x2_human Chi-squared Goodness-of-Fit Test 0.260 NA
#> n_valid_Females n_Males n_Females n_valid_Definitely humanoid n_valid_Robot?
#> 1 149 151 149 NA NA
#> 2 NA NA NA 144 156
#> 3 149 151 149 NA NA
#> 4 NA NA NA 144 156
#> 5 149 151 149 NA NA
#> 6 NA NA NA 144 156
#> n_Definitely humanoid n_Robot?
#> 1 NA NA
#> 2 144 156
#> 3 NA NA
#> 4 144 156
#> 5 NA NA
#> 6 144 156
makeme(
data = ex_survey,
dep = b_1, indep = x1_sex,
type = "cat_prop_plot_docx"
)
#> rdocx document with 2 element(s)
#>
#> * styles:
#> Normal heading 1 heading 2
#> "paragraph" "paragraph" "paragraph"
#> heading 3 Default Paragraph Font Normal Table
#> "paragraph" "character" "table"
#> No List strong centered
#> "numbering" "character" "paragraph"
#> table_template Light List Accent 2 Titre 1 Car
#> "table" "table" "character"
#> Titre 2 Car Titre 3 Car Image Caption
#> "character" "character" "paragraph"
#> Table Caption Table Professional toc 1
#> "paragraph" "table" "paragraph"
#> toc 2 Balloon Text Texte de bulles Car
#> "paragraph" "paragraph" "character"
#> reference_id graphic title table title
#> "character" "paragraph" "paragraph"
#>
#> * Content at cursor location:
#> level num_id text style_name content_type
#> 1 NA NA Normal paragraph
makeme(
data = ex_survey,
dep = p_1:p_4, indep = x2_human,
type = "cat_table_html"
)
#> # A tibble: 8 × 8
#> .variable_label `Is respondent human?` `Strongly disagree (%)`
#> <ord> <fct> <chr>
#> 1 Yellow Party Robot? 16.03
#> 2 Yellow Party Definitely humanoid 20.83
#> 3 Blue Party Robot? 26.28
#> 4 Blue Party Definitely humanoid 19.44
#> 5 Green Party Robot? 25.00
#> 6 Green Party Definitely humanoid 13.89
#> 7 Red Party Robot? 19.23
#> 8 Red Party Definitely humanoid 16.67
#> # ℹ 5 more variables: `Somewhat disagree (%)` <chr>,
#> # `Somewhat agree (%)` <chr>, `Strongly agree (%)` <chr>, `NA (%)` <chr>,
#> # `Total (N)` <int>
makeme(
data = ex_survey,
dep = b_1:b_3,
crowd = c("target", "others", "all"),
mesos_var = "f_uni",
mesos_group = "Uni of A"
)
#> $Target
#>
#> $Others
#>
#> $All
#>