critiplot 2.1.0
Visualize risk-of-bias in systematic reviews and meta-analyses
Requires Python: >=3.11


![Preview](assets/critiplot-package.png)

[![Python Version](https://img.shields.io/badge/python-3.11+%2B-blue)](https://www.python.org/)
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17338087.svg)](https://doi.org/10.5281/zenodo.17338087)
[![PyPI Downloads](https://static.pepy.tech/personalized-badge/critiplot?period=total&units=INTERNATIONAL_SYSTEM&left_color=GREY&right_color=RED&left_text=downloads)](https://pepy.tech/projects/critiplot)
[![conda-forge](https://anaconda.org/conda-forge/critiplot/badges/version.svg)](https://anaconda.org/conda-forge/critiplot)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/critiplot/badges/platforms.svg)](https://anaconda.org/conda-forge/critiplot)


**Critiplot** is an open-source Python package for **visualizing risk-of-bias (RoB) assessments** across multiple evidence synthesis tools:

* **Newcastle-Ottawa Scale (NOS)**

* **JBI Critical Appraisal Checklists** (Case Report / Case Series)

* **GRADE certainty of evidence**

* **ROBIS for systematic reviews**

* **MMAT (Mixed Methods Appraisal Tool)**

* It produces **publication-ready traffic-light plots** and **stacked bar charts** for summarizing study quality.

* **Python Package**: [https://pypi.org/project/critiplot/2.1.0/](https://pypi.org/project/critiplot/2.1.0/)

---


## Data & Template

* Please strictly follow the **Data & Template** _(available as .csv & excel format)_ as mentioned in the main Critiplot Web: [critiplot.vercel.app](https://critiplot.vercel.app)

---

## 📥 Installation 

You can install **Critiplot** directly from PyPI _(works the best with Python 3.13 version)_:

```bash
pip install critiplot
```

Or install locally from source:

```bash
# Clone repository
git clone https://github.com/aurumz-rgb/Critiplot-Package.git
cd Critiplot-Package

# Install requirements
pip install -r requirements.txt

# Install package locally
pip install .
```

> Requires **Python 3.11+** _(Recommended: use Python 3.13 version)_, **Matplotlib**, **Seaborn**, and **Pandas**.

---

## ⚡ Usage

To visualize your data, import the plotting functions from `critiplot` and run them directly in a Python script (`.py`) or in the terminal using `python3`.

```python
import critiplot

from critiplot import plot_nos, plot_jbi_case_report, plot_jbi_case_series, plot_grade, plot_robis, plot_mmat
```

**Example:**

```python
# NOS
plot_nos("tests/sample_nos.csv", "tests/output_nos.png", theme="blue")

# ROBIS
plot_robis("tests/sample_robis.csv", "tests/output_robis.png", theme="smiley")

# JBI Case Report
plot_jbi_case_report("tests/sample_jbi_case_report.csv", "tests/output_case_report.png", theme="gray")

# JBI Case Series
plot_jbi_case_series("tests/sample_jbi_case_series.csv", "tests/output_case_series.png", theme="smiley_blue")

# GRADE
plot_grade("tests/sample_grade.csv", "tests/output_grade.png", theme="green")

# MMAT
plot_mmat("tests/sample_mmat.csv", "tests/output_mmat.png", theme="default")
```

> **Theme options:**
>
> * NOS, JBI Case Report / Case Series, ROBIS, MMAT: `"default"`, `"blue"`, `"gray"`, `"smiley"`, `"smiley_blue"`
> * GRADE: `"default"`, `"green"`, `"blue"`
> * Default theme is used if omitted.

![Python Result](python.png)


You can also use Critiplot Python package validation repository where validation was done using .py file (Was done for v2.1.0)
You can check it out here: [https://github.com/critiplot/Critiplot-Validation](https://github.com/critiplot/Critiplot-Validation)

---


### 📂 Example Datasets

For reproducibility and reference, example `.csv` and `.xlsx` files are included in the repository:

| Tool / Assessment Type           | Example Files                                                   |
| -------------------------------- | --------------------------------------------------------------- |
| **Newcastle–Ottawa Scale (NOS)** | `tests/sample_nos.csv`, `tests/sample_nos.xlsx`                 |
| **ROBIS**                        | `tests/sample_robis.csv`, `tests/sample_robis.xlsx`             |
| **GRADE**                        | `tests/sample_grade.csv`, `tests/sample_grade.xlsx`             |
| **JBI Case Report**              | `tests/sample_case_report.csv`, `tests/sample_case_report.xlsx` |
| **JBI Case Series**              | `tests/sample_case_series.csv`, `tests/sample_case_series.xlsx` |
| **MMAT**                         | `tests/sample_mmat.csv`, `tests/sample_mmat.xlsx`               |

You can **open these files directly** to view the expected column format and data layout for each plotting function.


---

## 🧩 Reproducibility 

All results in the paper can be reproduced by following the method as mentioned in **Usage**

**I would personally recommend testing using Python 3.13**

You can also use Critiplot Python package validation repository (Was done for v1.0.3, newer version visualizes an additional plot i.e. MMAT) 
You can check it out here: [https://github.com/critiplot/Critiplot-Validation](https://github.com/critiplot/Critiplot-Validation)

---


## Notes

* Generates **traffic-light plots** and **weighted bar charts** using **Matplotlib / Seaborn**.
* Input data must be a CSV or Excel file following each tool’s required columns.
* Critiplot is a **visualization tool only**; it **does not compute risk-of-bias**.

---

## Info

* Web version also exists for this package.
* GitHub: [https://github.com/aurumz-rgb/Critiplot-main](https://github.com/aurumz-rgb/Critiplot-main)
* Web: [https://critiplot.vercel.app](https://critiplot.vercel.app)


---

## Citation

If you use this software, please cite it using the following metadata:

```yaml
cff-version: 1.2.0
message: "If you use this software, please cite it using the following metadata."
title: "Critiplot: A Python based Package for risk-of-bias data visualization in Systematic Reviews & Meta-Analysis"
version: "v2.1.0"
doi: "10.5281/zenodo.17338087"
date-released: 2025-09-06
authors:
  - family-names: "Sahu"
    given-names: "Vihaan"
preferred-citation:
  type: software
  authors:
    - family-names: "Sahu"
      given-names: "Vihaan"
  title: "Critiplot: A Python based Package for risk-of-bias data visualization in Systematic Reviews & Meta-Analysis"
  version: "v2.1.0"
  doi: "10.5281/zenodo.17338087"
  year: 2025
  url: "https://doi.org/10.5281/zenodo.17338087"
```

Or cite as:

> **Sahu, V. (2025). *Critiplot: A Python based Package for risk-of-bias data visualization in Systematic Reviews & Meta-Analysis* (v2.1.0). Zenodo. [https://doi.org/10.5281/zenodo.17338087](https://doi.org/10.5281/zenodo.17338087)**


---

## 📜 License

Apache 2.0 © 2025 Vihaan Sahu

---


## Example / Result

Here’s an example traffic-light plot generated using Critiplot with different themes:

![Example Result](example/result.png)
![Example Result22](example/result2.png)
**NOS**


![Example Result1](example/grade_result2.png)
![Example Result13](example/grade_result3.png)
**GRADE**


![Example Result21](example/robis_result4.png)
![Example Result23](example/robis_result3.png)
**ROBIS**



![Example Result34](example/case_report.png)
![Example Result37](example/case_report2.png)
**JBI Case Report**


![Example Result4](example/series_plot1.png)
![Example Result43](example/series_plot4.png)
**JBI Case Series**


![Example Result990](example/MMAT2.png)
**MMAT Descriptive Plot**


![Example Result9909](example/MMAT7.png)
**MMAT Non-Randomized Plot**


![Example Result99099](example/MMAT8.png)
**MMAT Mixed-Methods Plot**


![Example Result990999](example/MMAT9.png)
**MMAT Randomized Plot**


![Example Result9909990](example/MMAT6.png)
**MMAT Qualitative Plot**