The purpose of this post is to introduce ggtextparallels, a tool for cheap frugal biblical scholars who don’t want to pay for books and other proprietary software. Somewhere on the internet Hadley Wickham advises new R developers to find problems and then try and solve them. Within that framework, the problem is about $70 (plus shipping and handling) and the solution is devtools::install_github("daranzolin/ggtextparllels").

ggtextparallels sports two functions: ggtextparllel and gglangparellel. The former plots passages across gospels and the latter plots passages across versions. A brief demonstration is below.

The gospels are fascinating for a million reasons, but their intertextuality has captivated readers for almost 2000 years. Did Matthew and Luke use Mark? Why does Matthew and Luke have stories that Mark doesn’t? Why is John so different? These are questions without firm answers. But we can better understand the differences and similarities by viewing the texts alongside each other. With a few APIs and the brilliance of ggplot2, creating such a tool is a snap.

Note the differences in John the Baptist’s Messianic preaching:

ggtextparallel(16, version = "eng-ESV")


If you want to dip into the original greek, you can flip the version argument:

ggtextparallel(16, version = "grc")


Or you want to see it in Spanish?

ggtextparallel(16, version = "spa-RVR1960")


Over 275 languages across 300 versions are available. Consult the lazily loaded biblesearch_versions object for available versions.

The package has a second function, gglangparallels for the bilingual and trilingual. Here you can view one passage across multiple versions:

gglangparallel(c("eng-ESV", "spa-RVR1960", "por-NTLH"), book = "john", verses = "1:1-5")


I have tentative plans to create a bookdown function that would create an entire book in parallel of any input versions/languages. Or perhaps a shiny web app. Regardless, I hope it saves some poor student $80 down the road.