epiverse-trace / epiverse-trace/tutorials-late

Add ggplot contact matrix heatmaps to explain symmetry in contact-matrices episode

Open
#146 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
R
Stars
2
Forks
5
Avg merge
4m
Merged PRs (30d)
2

Description

## Context

The `contact-matrices` episode explains symmetric contact matrices but currently lacks a visual comparison that makes the symmetry argument concrete.

The script [`73-socialmixr-ggplot.R`](https://github.com/avallecam/epicatador/blob/main/73-socialmixr-ggplot.R) in `epicatador` has two helper functions (`format_big_mark`, `matrix_to_ggplot`) that produce ggplot heatmaps of the contact matrix.

## Plan

Add a single chunk (on a new branch) that:

1. Defines `format_big_mark()` — formats tile labels as human-readable numbers (K/M).
2. Defines `matrix_to_ggplot()` — converts a contact matrix to a `geom_tile` heatmap using `colorspace::scale_fill_continuous_sequential(palette = "OrYel")`.
3. Produces **two plots** side by side or sequentially:
- **Plot 1:** `contacts_byage$matrix` — mean contacts (asymmetric rates).
- **Plot 2:** `contacts_byage$matrix * contacts_byage$demography$population` — total contacts (symmetric).

The contrast between the two plots makes the symmetry argument visual and explicit.

## Adaptations from source

- Uses standard `contacts_byage` object (already loaded upstream via `contactsurveys` pattern).
- Uses `|>` instead of `%>%`.
- Explicit `pkg::` namespacing.
- No `socialmixr::get_survey()` — survey loaded upstream.

## Dependencies

- `colorspace` (for `scale_fill_continuous_sequential`)
- `scales` (for `label_number`)
- `ggplot2`, `dplyr` (already used in the episode)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.