Skip to content

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

Description

@avallecam

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions