Metadata-Version: 2.4
Name: plot-misc
Version: 2.2.2
Summary: Various plotting templates built on top of matplotlib
Author-email: A Floriaan Schmidt <floriaanschmidt@gmail.com>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://gitlab.com/SchmidtAF/plot-misc
Project-URL: Documentation, https://schmidtaf.gitlab.io/plot-misc/
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas>=1.3
Requires-Dist: numpy>=1.21
Requires-Dist: matplotlib>=3.5
Requires-Dist: scipy>=1.5
Requires-Dist: statsmodels>=0.1
Requires-Dist: scikit-learn>=1.4
Requires-Dist: adjustText>=1.3
Provides-Extra: dev
Requires-Dist: python-build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: setuptools; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: pytest>=6; extra == "dev"
Requires-Dist: pytest-mock>=3; extra == "dev"
Requires-Dist: pytest-dependency>=0.5; extra == "dev"
Requires-Dist: bump2version>=1; extra == "dev"
Requires-Dist: codespell; extra == "dev"
Requires-Dist: jupyter; extra == "dev"
Requires-Dist: sphinx_rtd_theme; extra == "dev"
Requires-Dist: sphinx-bootstrap-theme; extra == "dev"
Requires-Dist: furo; extra == "dev"
Requires-Dist: myst-parser; extra == "dev"
Requires-Dist: notebook; extra == "dev"
Requires-Dist: nbsphinx; extra == "dev"
Requires-Dist: nbsphinx-link; extra == "dev"
Requires-Dist: sphinx-argparse; extra == "dev"
Requires-Dist: numpydoc; extra == "dev"
Requires-Dist: docutils<0.21; extra == "dev"
Dynamic: license-file

<img src="https://schmidtaf.gitlab.io/plot-misc/_images/icon.png" alt="plot-misc icon" width="250"/>

# A collection of plotting functions
__version__: `2.2.2`

This repository collects plotting modules written on top of `matplotlib`.
The functions describe plotting archetypes intended to set up light-touch,
illustrations that can be customised using the standard matplotlib interface
via axes and figures.
Because the implementation is matplotlib-first, the API is consistent with
matplotlib conventions, and users already familiar with the library will find 
the learning curve minimal.

The functionality is geared towards illustrations commonly used in biomedical 
research:

* Bar charts
* Bubble charts
* Forest plots (with optional side-tables)
* Heatmaps (with optional annotations)
* Incidence matrix plots
* Machine learning plots (calibration, feature importance, net benefit)
* Pie charts
* Survival plots (with optional survival table)
* Tree/compatibility plots
* Volcano plots

Please consult the **[documentation](https://SchmidtAF.gitlab.io/plot-misc/)** 
for plot-misc.

## Installation 
The package is available on PyPI, and conda, with the latest source code 
available on gitlab. 

### Installation using PyPI

To install the package from PyPI, run:

```bash
pip install plot-misc
```

This installs the latest stable release along with its dependencies.

### Installation using conda

A Conda package is maintained in my personal Conda channel.
To install from this channel, run:

```bash
conda install afschmidt::plot-misc
```

### Installation using gitlab

If you require the latest updates, potentially not yet formally released,
you can install the package directly from GitLab.

First, clone the repository and move into its root directory:

```bash
git clone git@gitlab.com:SchmidtAF/plot-misc.git
cd plot-misc
```

Install the dependencies:

```bash
# From the root of the repository
conda env create --file ./resources/conda/envs/conda_create.yaml
```

To add to an existing environment use:

```bash
# From the root of the repository
conda env update --file ./resources/conda/envs/conda_update.yaml
```

Next the package can be installed: 

```bash
make install
```

#### Development
For development work, install the package in editable mode with Git commit 
hooks configured:

```bash
make install-dev
```
This command installs the package in editable mode and configures Git commit 
hooks, allowing you to run `git pull` to update the repository or switch 
branches without reinstalling.

Alternatively, you can install manually:
```bash
python -m pip install -e .
python .setup_git_hooks.py
```

#### Git Hooks Configuration


When setting up a development environment, the `setup-hooks` command 
configures Git hooks to enforce conventional commit message formatting and 
spell check using `codespell`.

To view the commit message format requirements, run:

```bash
./.githooks/commit-msg -help
```

For frequent use, add this function to your shell configuration (`~/.bashrc` 
or `~/.zshrc`):

```bash
commit-format-help() {
    local git_root
    git_root=$(git rev-parse --show-toplevel 2>/dev/null)
    
    if [ -z "$git_root" ]; then
        echo "Error: Not inside a git repository"
        return 1
    fi
    
    local hook_path="$git_root/.githooks/commit-msg"
    
    if [ ! -f "$hook_path" ]; then
        echo "Error: commit-msg hook not found"
        return 1
    fi
    
    "$hook_path" --help
}
```

#### Validating the package

After installing the package from GitLab, you may wish to run the test
suite to confirm everything is working as expected:

```bash
# From the root of the repository
pytest tests
```

## Usage

Please have a look at the examples in 
[resources](https://gitlab.com/SchmidtAF/plot-misc/-/tree/master/resources/examples)
for some possible recipes. 


