diff --git a/NEWS.md b/NEWS.md
index add902624..457d41831 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,6 @@
# Changes in release 4.4.0
+- Extend `plot_graph()` to display subcomponents. Check out arguments `from`, `mode`, `order`, and `shrink_edges`. The [graphing vignette](https://github.com/wlandau-lilly/drake/blob/master/vignettes/graph.Rmd) has demonstrations.
- Add `"future_lapply"` parallelism: parallel backends supported by the [future](https://github.com/HenrikBengtsson/future) and [future.batchtools](https://github.com/HenrikBengtsson/future.batchtools) packages. See `?backend` for examples and the [parallelism vignette](https://github.com/wlandau-lilly/drake/blob/master/vignettes/parallelism.Rmd) for an introductory tutorial. More advanced instruction can be found in the `future` and `future.batchtools` packages themselves.
- Cache diagnostic information of targets that fail and retrieve diagnostic info with `diagnose()`.
- Add an optional `hook` argument to `make()` to wrap around `build()`. That way, users can more easily control the side effects of distributed jobs. For example, to redirect error messages to a file in `make(..., parallelism = "Makefile", jobs = 2, hook = my_hook)`, `my_hook` should be something like `function(code){withr::with_message_sink("messages.txt", code)}`.
diff --git a/README.md b/README.md
index 21af4d7e5..5323dd378 100644
--- a/README.md
+++ b/README.md
@@ -193,6 +193,7 @@ The [CRAN page](https://CRAN.R-project.org/package=drake) links to multiple rend
```r
vignette(package = "drake") # List the vignettes.
vignette("drake") # High-level intro.
+vignette("graph") # Visualilze the workflow graph.
vignette("quickstart") # Walk through a simple example.
vignette("parallelism") # Extensive prallel computing functionality.
vignette("storage") # Learn how drake stores your stuff.
@@ -235,9 +236,10 @@ Similarly to imported functions like `reg2()`, `drake` reacts to changes in
1. Upstream targets.
1. For [dynamic knitr reports](https://yihui.name/knitr) (with `knit('your_report.Rmd')` as a command in your workflow plan data frame), targets and imports mentioned in calls to `readd()` and `loadd()` in the code chunks to be evaluated. `Drake` treats these targets and imports as dependencies of the compiled output target (say, 'report.md').
-See the `quickstart` vignette for demonstrations of `drake`'s reproducibility and reactivity.
+See the `quickstart` vignette for demonstrations of `drake`'s reproducibility and reactivity. See the `graph` vignette for a detailed walkthrough of the visualizations.
```r
+vignette("graph")
vignette("quickstart")
```
diff --git a/vignettes/caution.Rmd b/vignettes/caution.Rmd
index 7f9de933a..ddb748b32 100644
--- a/vignettes/caution.Rmd
+++ b/vignettes/caution.Rmd
@@ -246,7 +246,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
diff --git a/vignettes/drake.Rmd b/vignettes/drake.Rmd
index 703674bc2..3b29f46f5 100644
--- a/vignettes/drake.Rmd
+++ b/vignettes/drake.Rmd
@@ -191,6 +191,7 @@ The [CRAN page](https://CRAN.R-project.org/package=drake) links to multiple rend
```{r vignettesdrakermd, eval = FALSE}
vignette(package = "drake") # List the vignettes.
vignette("drake") # High-level intro.
+vignette("graph") # Visualilze the workflow graph.
vignette("quickstart") # Walk through a simple example.
vignette("parallelism") # Lots of parallel computing support.
vignette("storage") # Learn how drake stores your stuff.
@@ -233,9 +234,10 @@ Similarly to imported functions like `reg2()`, `drake` reacts to changes in
1. Upstream targets.
1. For [dynamic knitr reports](https://yihui.name/knitr/) (with `knit('your_report.Rmd')` as a command in your workflow plan data frame), targets and imports mentioned in calls to `readd()` and `loadd()` in the code chunks to be evaluated. `Drake` treats these targets and imports as dependencies of the compiled output target (say, `report.md`).
-See the `quickstart` vignette for demonstrations of `drake`'s reproducibility and reactivity.
+See the `quickstart` vignette for demonstrations of `drake`'s reproducibility and reactivity. See the `graph` vignette for a walkthrough of the workflow plan visualizations.
```{r drakermdquickvignette, eval = FALSE}
+vignette("graph")
vignette("quickstart")
```
@@ -262,7 +264,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
diff --git a/vignettes/graph.Rmd b/vignettes/graph.Rmd
index 52a5eadb1..70141318e 100644
--- a/vignettes/graph.Rmd
+++ b/vignettes/graph.Rmd
@@ -29,7 +29,7 @@ plot_graph(my_plan)
```
@@ -50,7 +50,7 @@ plot_graph(my_plan)
But after a `make()`, we are all caught up.
@@ -67,7 +67,7 @@ plot_graph(my_plan)
```
@@ -81,7 +81,7 @@ plot_graph(my_plan, targets_only = TRUE)
```
@@ -94,7 +94,7 @@ plot_graph(my_plan, from = c("regression2_small", "regression2_large"))
```
@@ -107,7 +107,7 @@ plot_graph(my_plan, from = "small", mode = "in")
```
@@ -120,7 +120,7 @@ plot_graph(my_plan, from = "small", mode = "all", order = 1)
```
@@ -138,7 +138,7 @@ plot_graph(
```
diff --git a/vignettes/parallelism.Rmd b/vignettes/parallelism.Rmd
index 7620a737e..9d16e6254 100644
--- a/vignettes/parallelism.Rmd
+++ b/vignettes/parallelism.Rmd
@@ -39,7 +39,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
diff --git a/vignettes/quickstart.Rmd b/vignettes/quickstart.Rmd
index 816bf9a3c..6f0092f83 100644
--- a/vignettes/quickstart.Rmd
+++ b/vignettes/quickstart.Rmd
@@ -129,7 +129,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
@@ -274,7 +274,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
@@ -329,7 +329,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```
diff --git a/vignettes/timing.Rmd b/vignettes/timing.Rmd
index 7e7673738..2b47fff1c 100644
--- a/vignettes/timing.Rmd
+++ b/vignettes/timing.Rmd
@@ -116,7 +116,7 @@ plot_graph(my_plan, width = "100%", height = "500px")
```