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

Open Beginner friendly
#146 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
68/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
r

Research direction

Read the contact-matrices episode and the referenced 73-socialmixr-ggplot.R script, then run the episode through the existing contacts_byage setup. Add one chunk producing heatmaps for contacts_byage$matrix and the population-weighted matrix, and confirm that the plots visibly contrast asymmetric rates with symmetric total contacts.

Written by the indexing model from the issue text.

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 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)
Dominant language
R
Stars
2
Forks
5
Avg merge
4m
Merged PRs (30d)
2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from epiverse-trace/tutorials-late

All issues in epiverse-trace/tutorials-late

Similar issues

More R issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.