[](https://doi.org/10.5281/zenodo.5531785)
# PyCatFlow
This package is a visualization tool which allows the representation of temporal developments, based on categorical data. I wrote a short [article on Medium](https://medium.com/@bumatic/pycatflow-visualizing-categorical-data-over-time-b344102bcce2) in which I outline the basic idea of PyCatFlow and provide a Tutorial for non-programmers based on a [Jupyter Notebook with interactive widgets that can be run online](https://mybinder.org/v2/gist/bumatic/83c3423595cde010da7ad059c6b8b2f5/HEAD).
## Install
PyCatFlow is available on PyPi:
```Shell
$ pip3 install pycatflow
```
Alternatively you can download the repository and install the package by running
the setup.py install routine. Make sure to install the requirements as well:
```python
pip3 install -r requirements.txt
python3 setup.py install
```
**Additional Requirements:**
The visualization and export is based on the [drawSvg](https://pypi.org/project/drawSvg/) package that
in turn requires cairo to be installed as an external requirement. Platform-specific instructions for installing cairo are available on the
[cairo homepage](https://www.cairographics.org/download/).
On macOS cairo can be installed easily using [homebrew](https://brew.sh/):
```Bash
$ brew install cairo
```
## Basic usage
The visualization library provides many functionalities for adjusting the visual output. A simple use case is however as follows:
```Python
import pycatflow as pcf
# Loading and parsing data:
data = pcf.read_file("sample_data_ChatterBot_Requirements.csv", columns="column", nodes="items", categories="category", column_order="column order")
# Generating the visualization
viz = pcf.visualize(data, spacing=20, width=800, maxValue=20, minValue=2)
viz.savePng('sample_viz.png')
viz.saveSvg('sample_viz.svg')
viz
```
The code and sample data are provided in the example folder. The data contains
annual snapshots of requirements of the [ChatterBots framework](https://github.com/gunthercox/ChatterBot)
developed and maintained by Gunther Cox.
Running the above code creates this visualization:

## Credits & License
PyCatFlow was conceptualized by Marcus Burkhardt and implemented in collaboration with Herbert Natta ([@herbertmn](https://github.com/herbertmn)). It is inspired by the Rankflow visualization tool develped by Bernhard Rieder.
**Cite as:** Marcus Burkhardt, and Herbert Natta. 2021. “PyCatFlow: A Python Package for Visualizing Categorical Data over Time”. Zenodo. https://doi.org/10.5281/zenodo.5531785.
The package is released under MIT License.
Raw data
{
"_id": null,
"home_page": "https://github.com/bumatic/PyCatFlow",
"name": "pycatflow",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": null,
"author": "Marcus Burkhardt",
"author_email": "marcus.burkhardt@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/8b/eb/b8a16b28dc35763fb6e5d20e295c3414d57c150f50d96d44c2f58e952820/pycatflow-0.1.2.tar.gz",
"platform": null,
"description": "[](https://doi.org/10.5281/zenodo.5531785)\n\n# PyCatFlow\n\nThis package is a visualization tool which allows the representation of temporal developments, based on categorical data. I wrote a short [article on Medium](https://medium.com/@bumatic/pycatflow-visualizing-categorical-data-over-time-b344102bcce2) in which I outline the basic idea of PyCatFlow and provide a Tutorial for non-programmers based on a [Jupyter Notebook with interactive widgets that can be run online](https://mybinder.org/v2/gist/bumatic/83c3423595cde010da7ad059c6b8b2f5/HEAD).\n\n## Install \n\nPyCatFlow is available on PyPi:\n\n```Shell\n$ pip3 install pycatflow\n```\nAlternatively you can download the repository and install the package by running \nthe setup.py install routine. Make sure to install the requirements as well:\n\n```python\npip3 install -r requirements.txt\npython3 setup.py install\n```\n\n**Additional Requirements:** \nThe visualization and export is based on the [drawSvg](https://pypi.org/project/drawSvg/) package that \nin turn requires cairo to be installed as an external requirement. Platform-specific instructions for installing cairo are available on the \n[cairo homepage](https://www.cairographics.org/download/).\n\nOn macOS cairo can be installed easily using [homebrew](https://brew.sh/):\n\n```Bash\n$ brew install cairo\n```\n\n## Basic usage\n\nThe visualization library provides many functionalities for adjusting the visual output. A simple use case is however as follows:\n\n```Python\nimport pycatflow as pcf\n\n# Loading and parsing data:\ndata = pcf.read_file(\"sample_data_ChatterBot_Requirements.csv\", columns=\"column\", nodes=\"items\", categories=\"category\", column_order=\"column order\")\n\n# Generating the visualization\nviz = pcf.visualize(data, spacing=20, width=800, maxValue=20, minValue=2)\nviz.savePng('sample_viz.png')\nviz.saveSvg('sample_viz.svg')\nviz\n```\n\nThe code and sample data are provided in the example folder. The data contains \nannual snapshots of requirements of the [ChatterBots framework](https://github.com/gunthercox/ChatterBot) \ndeveloped and maintained by Gunther Cox.\n\nRunning the above code creates this visualization:\n\n\n\n\n## Credits & License\n\nPyCatFlow was conceptualized by Marcus Burkhardt and implemented in collaboration with Herbert Natta ([@herbertmn](https://github.com/herbertmn)). It is inspired by the Rankflow visualization tool develped by Bernhard Rieder. \n\n**Cite as:** Marcus Burkhardt, and Herbert Natta. 2021. \u201cPyCatFlow: A Python Package for Visualizing Categorical Data over Time\u201d. Zenodo. https://doi.org/10.5281/zenodo.5531785.\n\nThe package is released under MIT License.\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A tool for visualizing categorical data over time.",
"version": "0.1.2",
"project_urls": {
"Homepage": "https://github.com/bumatic/PyCatFlow"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "82dd28b11cdc408471f12bcec2bc4ba71dae245c2bf1bb8799951bab2454e57a",
"md5": "ba281afa245f358eddb1309e00c2f7bf",
"sha256": "25f58b9ba3fe086411a8c1720a68e74b7ada3ed5debdbe605b8953a96fbc34d7"
},
"downloads": -1,
"filename": "pycatflow-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ba281afa245f358eddb1309e00c2f7bf",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 11128,
"upload_time": "2024-05-23T20:05:28",
"upload_time_iso_8601": "2024-05-23T20:05:28.436580Z",
"url": "https://files.pythonhosted.org/packages/82/dd/28b11cdc408471f12bcec2bc4ba71dae245c2bf1bb8799951bab2454e57a/pycatflow-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8bebb8a16b28dc35763fb6e5d20e295c3414d57c150f50d96d44c2f58e952820",
"md5": "f3d99b62677125c40b19e7ce0acb723c",
"sha256": "3ef8d3abbd7857fad298c22a2b9f11a2fa4ac7a9250f993eeab2da349cfb60e7"
},
"downloads": -1,
"filename": "pycatflow-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "f3d99b62677125c40b19e7ce0acb723c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 12343,
"upload_time": "2024-05-23T20:05:36",
"upload_time_iso_8601": "2024-05-23T20:05:36.222391Z",
"url": "https://files.pythonhosted.org/packages/8b/eb/b8a16b28dc35763fb6e5d20e295c3414d57c150f50d96d44c2f58e952820/pycatflow-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-23 20:05:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bumatic",
"github_project": "PyCatFlow",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "pycatflow"
}