{"id":33187018,"url":"https://jbengler.github.io/tidyplots/","last_synced_at":"2025-11-20T23:01:09.111Z","repository":{"id":193353021,"uuid":"688655618","full_name":"jbengler/tidyplots","owner":"jbengler","description":"Tidy Plots for Scientific Papers","archived":false,"fork":false,"pushed_at":"2025-11-13T23:15:30.000Z","size":390022,"stargazers_count":629,"open_issues_count":14,"forks_count":26,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-11-13T23:29:09.190Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://jbengler.github.io/tidyplots/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbengler.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"jbengler","thanks_dev":null,"custom":null}},"created_at":"2023-09-07T20:16:21.000Z","updated_at":"2025-11-13T23:08:03.000Z","dependencies_parsed_at":"2023-10-22T02:52:46.641Z","dependency_job_id":"f254a3e4-96eb-4dd3-b456-54cf843f7089","html_url":"https://github.com/jbengler/tidyplots","commit_stats":null,"previous_names":["jbengler/tidyplots"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jbengler/tidyplots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbengler%2Ftidyplots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbengler%2Ftidyplots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbengler%2Ftidyplots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbengler%2Ftidyplots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbengler","download_url":"https://codeload.github.com/jbengler/tidyplots/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbengler%2Ftidyplots/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285526205,"owners_count":27186656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-16T05:00:30.368Z","updated_at":"2025-11-20T23:01:09.088Z","avatar_url":"https://github.com/jbengler.png","language":"R","funding_links":["https://buymeacoffee.com/jbengler"],"categories":["Plot layers"],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, include = FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  results = FALSE,\n  message = FALSE,\n  warning = FALSE,\n  fig.align = \"center\",\n  dpi = 300,\n  fig.width = 5,\n  fig.height = 2.5,\n  fig.path = \"man/figures/README-\"\n)\n```\n\n# tidyplots \u003ca href=\"https://jbengler.github.io/tidyplots/\"\u003e\u003cimg src=\"man/figures/logo.svg\" align=\"right\" height=\"139\" alt=\"tidyplots website\" /\u003e\u003c/a\u003e\n\n\u003c!-- badges: start --\u003e\n[![R-CMD-check](https://github.com/jbengler/tidyplots/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/jbengler/tidyplots/actions/workflows/R-CMD-check.yaml)\n[![CRAN status](https://www.r-pkg.org/badges/version/tidyplots)](https://CRAN.R-project.org/package=tidyplots)\n\u003c!-- badges: end --\u003e\n\nThe goal of `tidyplots` is to streamline the creation of publication-ready plots for scientific papers. It allows to gradually add, remove and adjust plot components using a consistent and intuitive syntax.\n\n## Citation\n\nEngler, Jan Broder. 2025. “Tidyplots Empowers Life Scientists With Easy Code-Based Data Visualization.” _iMeta_ e70018. https://doi.org/10.1002/imt2.70018\n\n## Installation\n\nYou can install the released version of tidyplots from [CRAN](https://cran.r-project.org/) with:\n``` r\ninstall.packages(\"tidyplots\")\n```\n\nAnd the development version from [GitHub](https://github.com/) with:\n``` r\n# install.packages(\"pak\")\npak::pak(\"jbengler/tidyplots\")\n```\n\n## Cheatsheet\n\nThis cheatsheet gives a high level overview of available functions.\n\n\u003ca href=\"https://tidyplots.org/tidyplots-cheatsheet-v1.pdf\"\u003e\u003cimg src=\"man/figures/cheatsheet-v1.png\" alt=\"tidyplots cheatsheet\" /\u003e\u003c/a\u003e\n\n## Usage\n\nHere are some examples.\n\nAlso have a look at the [getting started guide](https://jbengler.github.io/tidyplots/articles/tidyplots.html) and the [full documentation](https://jbengler.github.io/tidyplots/reference/). For more example plots, check out the [tidyplots use cases](https://tidyplots.org/use-cases/) website.\n\n```{r}\nlibrary(tidyplots)\n\nstudy |\u003e \n  tidyplot(x = treatment, y = score, color = treatment) |\u003e \n  add_mean_bar(alpha = 0.4) |\u003e \n  add_sem_errorbar() |\u003e \n  add_data_points_beeswarm()\n```\n\n```{r}\nenergy |\u003e \n  tidyplot(x = year, y = energy, color = energy_source) |\u003e \n  add_barstack_absolute()\n```\n\n```{r}\nenergy |\u003e \n  dplyr::filter(year %in% c(2005, 2010, 2015, 2020)) |\u003e \n  tidyplot(y = energy, color = energy_source) |\u003e \n  add_donut() |\u003e \n  adjust_size(width = 25, height = 25) |\u003e\n  split_plot(by = year)\n```\n\n```{r}\nenergy_week |\u003e \n  tidyplot(x = date, y = power, color = energy_source) |\u003e \n  add_areastack_absolute()\n```\n\n```{r}\nenergy_week |\u003e \n  tidyplot(x = date, y = power, color = energy_source) |\u003e \n  add_areastack_relative()\n```\n\n```{r}\nstudy |\u003e \n  tidyplot(x = group, y = score, color = dose) |\u003e \n  add_mean_bar(alpha = 0.4) |\u003e \n  add_mean_dash() |\u003e \n  add_mean_value()\n```\n\n```{r}\ntime_course |\u003e\n  tidyplot(x = day, y = score, color = treatment) |\u003e\n  add_mean_line() |\u003e\n  add_mean_dot() |\u003e\n  add_sem_ribbon()\n```\n\n```{r}\nclimate |\u003e\n  tidyplot(x = month, y = year, color = max_temperature) |\u003e\n  add_heatmap()\n```\n\n```{r, fig.height=3}\nstudy |\u003e \n  tidyplot(x = treatment, y = score, color = treatment) |\u003e \n  add_boxplot() |\u003e \n  add_test_pvalue(ref.group = 1)\n```\n\n```{r, fig.height=3.2}\ngene_expression |\u003e \n  dplyr::filter(external_gene_name %in% c(\"Apol6\", \"Col5a3\", \"Vgf\", \"Bsn\")) |\u003e \n  tidyplot(x = condition, y = expression, color = sample_type) |\u003e \n  add_mean_dash() |\u003e \n  add_sem_errorbar() |\u003e \n  add_data_points_beeswarm() |\u003e \n  add_test_asterisks(hide_info = TRUE) |\u003e \n  remove_x_axis_title() |\u003e \n  adjust_size(width = 25, height = 25) |\u003e \n  split_plot(by = external_gene_name)\n```\n\n```{r}\nstudy |\u003e \n  tidyplot(x = treatment, y = score, color = treatment) |\u003e \n  add_mean_bar(alpha = 0.4) |\u003e \n  add_sem_errorbar() |\u003e \n  add_data_points_beeswarm() |\u003e \n  view_plot(title = \"Default color scheme: 'friendly'\") |\u003e \n  adjust_colors(colors_discrete_apple) |\u003e \n  view_plot(title = \"Alternative color scheme: 'apple'\")\n```\n\n## Documentation\n\n- [Package index](https://jbengler.github.io/tidyplots/reference/)  \nOverview of all tidyplots functions\n\n- [Get started](https://jbengler.github.io/tidyplots/articles/tidyplots.html)  \nGetting started guide\n\n- [Visualizing data](https://jbengler.github.io/tidyplots/articles/Visualizing-data.html)  \nArticle with examples for common data visualizations\n\n- [Advanced plotting](https://jbengler.github.io/tidyplots/articles/Advanced-plotting.html)  \nArticle about advanced plotting techniques and workflows\n\n- [Color schemes](https://jbengler.github.io/tidyplots/articles/Color-schemes.html)  \nArticle about the use of color schemes\n\n## Acknowledgements\n\nI would like to thank Lars Binkle-Ladisch for our insightful discussions and for consistently challenging my decisions regarding the naming of functions and their arguments.\n\nMany thanks to the R and tidyverse communities. tidyplots is built upon their software and coding paradigms, and it would not have been possible without their contributions.\n\ntidyplots relies on several fantastic packages that handle all the heavy lifting behind the scenes. These include \n    cli,\n    dplyr,\n    forcats,\n    ggbeeswarm,\n    ggplot2,\n    ggpubr,\n    ggrastr,\n    ggrepel,\n    glue,\n    Hmisc,\n    htmltools,\n    lifecycle,\n    patchwork,\n    purrr,\n    rlang,\n    scales,\n    stringr,\n    tidyr, and\n    tidyselect.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/jbengler.github.io%2Ftidyplots%2F","html_url":"https://awesome.ecosyste.ms/projects/jbengler.github.io%2Ftidyplots%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/jbengler.github.io%2Ftidyplots%2F/lists"}