Skip to contents

ggdag (development version)

  • geom_dag() gains a label_geom parameter that allows users to specify which geom function to use for labels when use_labels = TRUE (#133). The default remains geom_dag_label_repel for backward compatibility, but users can now choose any label/text geom function such as geom_dag_label, geom_dag_text_repel, geom_dag_label_repel2, or geom_dag_text_repel2.

  • geom_dag_text_repel() and geom_dag_label_repel() now support all current ggrepel parameters (#172):

    • Added stat, position, min.segment.length, force_pull, max.time, max.overlaps, xlim, ylim, direction, seed, and verbose parameters
    • segment.alpha now defaults to 1 but can be overridden by users
    • All segment.* parameters (e.g., segment.linetype, segment.curvature, segment.angle) now pass through correctly via ...
    • Parameters like point.size and point.colour can also be passed through ...
    • Fixed support for ggrepel::position_nudge_repel() - users can now use either nudge_x/nudge_y parameters or position = position_nudge_repel()
    • Both approaches now work with vector inputs for differential nudging of labels
  • Added comprehensive set of is_*() functions for testing DAG properties:

  • Added edge_backdoor() function to classify edges as being on backdoor paths, direct causal paths, or both between exposure and outcome (#137)

  • Enhanced dag_paths() and query_paths() to include path_type column that classifies paths as “backdoor” or “direct” (#137)

  • Changed default aesthetic in ggdag_paths() from coloring by path status to coloring by path type (direct vs backdoor), providing more informative visualization of causal pathways

  • Introduced new query_*() API for direct analytical queries on DAGs (#185). These functions return tibbles with results rather than tidy DAG objects for plotting:

  • All error messages, warnings, and informational messages now use the cli package for better formatting and user experience. This change adds custom error classes (ggdag_error, ggdag_warning) that enable programmatic error handling (#191).

  • Fixed tidy_dagitty() error when processing DAGs with no edges (#159)

  • Fixed dag_paths() error when no open paths exist between nodes (#180)

  • Introduced new functions query_conditional_independence(), test_conditional_independence(), and ggdag_conditional_independence() for detecting, testing, and visualizing implied conditional independencies in a given DAG and dataset (#139)

  • Added sort parameter to ggdag_conditional_independence() with default TRUE to sort conditional independence tests by their estimates for improved readability (#170)

  • Introduced new functions aes_dag() and geom_dag() to simplify specification of ggplot code for most DAGs. Also refactored most quick plots to use these functions (#121)

  • Added new function geom_label_repel2() for more opinionated repelled labels that often look better on DAGs (#132)

  • Improved DAG data structure by removing unnecessary circular column when not needed. The column is now only included when using circular layouts. This simplifies the tidy DAG structure for most use cases (#119)

  • Edge geoms now support mapping color/colour aesthetics to edge_color/edge_colour for more intuitive usage, matching ggplot2 conventions (#166)

  • Fixed theme_dag() facet labels being clipped by adding margin to strip text (#173)

  • Added quick plot functions for the causal quartet: quartet_collider(), quartet_confounder(), quartet_mediator(), quartet_m_bias(), and quartet_time_collider(), along with their ggdag_* counterparts. These functions create DAGs representing the causal quartet from D’Agostino McGowan, Gerke, and Barrett (2023), demonstrating that statistical properties alone cannot determine causal relationships (#171)

ggdag 0.2.11

CRAN release: 2024-01-24

ggdag 0.2.10

CRAN release: 2023-05-28

  • Fixed bug where ggdag was using wrong left_join() interface with dplyr 1.1.0 (#110)

ggdag 0.2.9

CRAN release: 2023-05-22

  • Fixed bugs in instrumental functions for complex and non-existent IVs (#99)
  • Updated URLs to new r-causal GitHub repository (#94)

ggdag 0.2.8

CRAN release: 2023-03-17

  • Added new function time_ordered_coords() for calculating time-ordered coordinates (#88)
  • Addressed changes requested by CRAN, other changes in tidyverse (#87, #86, #85)

ggdag 0.2.7

CRAN release: 2022-10-29

  • Fixed various bugs in calculating and visualizing paths (#75)
  • Fixed breaking changes from the upcoming release of ggplot2 3.4.0 (#79)
  • size is now deprecated for geom_dag_collider_edges() in favor of linewidth, related to #79.

ggdag 0.2.6

CRAN release: 2022-08-26

  • Fixed CRAN errors

ggdag 0.2.5

CRAN release: 2022-07-16

  • Fixed issue with dag_adjustment_sets() when width option was low by extracting adjustment sets directly (#70)
  • Fixed issue with tidy_dagitty() that missed nodes with no edges attached. May cause minor breaking changes in randomized layouts. (#68)
  • Added the limit argument to dag_paths, ggdag_paths, and ggdag_paths_fan (see dagitty::paths) (#65).

ggdag 0.2.4

CRAN release: 2021-10-10

  • tidy_dagitty() no longer allows the dendogram layout type (#62)
  • scale_adjusted() now correctly aligns legend types (#61)
  • ggdag no longer loads ggplot2 via Depends, instead importing it internally (#57).

ggdag 0.2.3

CRAN release: 2021-01-12

ggdag 0.2.2

CRAN release: 2020-02-13

ggdag 0.2.1

CRAN release: 2019-12-06

  • Fixed bug in ggdag_collider() where the aesthetics were flipped for the colors but not the labels (issue #15, b72e34b)
  • Used as.character.default() directly for working with characters to avoid dispatch error when the formula.tools package is attached (issue #17, 0f32bb4)

ggdag 0.2.0

CRAN release: 2019-09-12

  • Fixed compatibility issue with ggraph 2.0.0 by changing to strength parameter in curved geoms
  • Fixed join bug in node_equivalent_class() that didn’t account for the way dagitty returns DAGs with no direction
  • Fixed join bug in node_equivalent_class() that didn’t check to node
  • Implemented is_false() to avoid dependency on R 3.5.0
  • improved edge lengths
  • add {} to adjustment set names to reflect convention
  • Set nodes to be unstyled by default
  • Changed default themes and scales to be more like base ggplot2
  • Added a NEWS.md file to track changes to the package.

ggdag 0.1.0

CRAN release: 2018-03-27

  • Initial release