Bar Plot#

VueCore logo

Open In Colab

VueCore is a Python package for creating interactive and static visualizations of multi-omics data. It is part of a broader ecosystem of tools—including ACore for data processing and VueGen for automated reporting—that together enable end-to-end workflows for omics analysis.

This notebook demonstrates how to generate bar plots using plotting functions from VueCore. We showcase basic and advanced plot configurations, highlighting key customization options such as grouping, color mapping, text annotations, and export to multiple file formats.

Notebook structure#

First, we will set up the work environment by installing the necessary packages and importing the required libraries. Next, we will create basic and advanced bar plots.

  1. Work environment setup

  2. Basic bar plot

  3. Advanced bar plot

Credits and Contributors#

0. Work environment setup#

0.1. Installing libraries and creating global variables for platform and working directory#

To run this notebook locally, you should create a virtual environment with the required libraries. If you are running this notebook on Google Colab, everything should be set.

# VueCore library
%pip install vuecore

Hide code cell output

Requirement already satisfied: vuecore in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (0.0.6.dev69+g1f68bcc7c)
Requirement already satisfied: numpy in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (2.0.2)
Requirement already satisfied: pandas in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (2.3.2)
Requirement already satisfied: scipy in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (1.15.3)
Requirement already satisfied: plotly in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (6.3.0)
Requirement already satisfied: beautifulsoup4 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (4.13.5)
Requirement already satisfied: requests in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (2.32.5)
Requirement already satisfied: dash in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (3.2.0)
Requirement already satisfied: networkx in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (3.5)
Requirement already satisfied: matplotlib in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (3.10.6)
Requirement already satisfied: kaleido in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (1.1.0)
Requirement already satisfied: pyvis in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (0.3.1)
Requirement already satisfied: wordcloud in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (1.9.4)
Requirement already satisfied: cyjupyter in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (0.2.0)
Requirement already satisfied: nltk in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (3.9.1)
Requirement already satisfied: webweb in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (0.0.37)
Requirement already satisfied: acore in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (0.2.0)
Requirement already satisfied: dash-cytoscape in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (1.0.2)
Requirement already satisfied: pydantic in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (2.11.7)
Requirement already satisfied: nbformat>=4.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from vuecore) (5.10.4)
Requirement already satisfied: fastjsonschema>=2.15 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nbformat>=4.2.0->vuecore) (2.21.2)
Requirement already satisfied: jsonschema>=2.6 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nbformat>=4.2.0->vuecore) (4.25.1)
Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nbformat>=4.2.0->vuecore) (5.8.1)
Requirement already satisfied: traitlets>=5.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nbformat>=4.2.0->vuecore) (5.14.3)
Requirement already satisfied: attrs>=22.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->vuecore) (25.3.0)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->vuecore) (2025.9.1)
Requirement already satisfied: referencing>=0.28.4 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->vuecore) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->vuecore) (0.27.1)
Requirement already satisfied: platformdirs>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jupyter-core!=5.0.*,>=4.12->nbformat>=4.2.0->vuecore) (4.4.0)
Requirement already satisfied: typing-extensions>=4.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from referencing>=0.28.4->jsonschema>=2.6->nbformat>=4.2.0->vuecore) (4.15.0)
Requirement already satisfied: dsp-pandas in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.0.5)
Requirement already satisfied: scikit-learn>=1.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (1.7.2)
Requirement already satisfied: biopython in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (1.85)
Requirement already satisfied: combat in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.3.3)
Requirement already satisfied: gseapy!=1.1.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (1.1.9)
Requirement already satisfied: kmapper in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (2.1.0)
Requirement already satisfied: lifelines in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.30.0)
Requirement already satisfied: pingouin in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.5.5)
Requirement already satisfied: python-louvain in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.16)
Requirement already satisfied: PyWGCNA!=2.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (2.1.3)
Requirement already satisfied: snfpy in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.2.2)
Requirement already satisfied: umap-learn in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.5.9.post2)
Requirement already satisfied: statsmodels in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.14.5)
Requirement already satisfied: inmoose in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (0.8.1)
Requirement already satisfied: rarfile in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from acore->vuecore) (4.2)
Requirement already satisfied: contourpy>=1.0.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (4.59.2)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (1.4.9)
Requirement already satisfied: packaging>=20.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (25.0)
Requirement already satisfied: pillow>=8 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (3.2.3)
Requirement already satisfied: python-dateutil>=2.7 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from matplotlib->vuecore) (2.9.0.post0)
Requirement already satisfied: six>=1.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib->vuecore) (1.17.0)
Requirement already satisfied: seaborn>=0.11.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (0.13.2)
Requirement already satisfied: biomart>=0.9.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (0.9.2)
Requirement already satisfied: setuptools>=67.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (80.9.0)
Requirement already satisfied: reactome2py>=3.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (3.0.0)
Requirement already satisfied: anndata>=0.10.8 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (0.12.2)
Requirement already satisfied: rsrc>=0.1.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (0.1.3)
Requirement already satisfied: psutil>=5.9.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from PyWGCNA!=2.2.0->acore->vuecore) (7.0.0)
Requirement already satisfied: jinja2>=2.9.6 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pyvis->vuecore) (3.1.6)
Requirement already satisfied: ipython>=5.3.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pyvis->vuecore) (9.5.0)
Requirement already satisfied: jsonpickle>=1.4.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pyvis->vuecore) (4.1.1)
Requirement already satisfied: array-api-compat>=1.7.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (1.12.0)
Requirement already satisfied: h5py>=3.8 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (3.14.0)
Requirement already satisfied: legacy-api-wrap in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (1.4.1)
Requirement already satisfied: natsort in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (8.4.0)
Requirement already satisfied: zarr!=3.0.*,>=2.18.7 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (3.1.2)
Requirement already satisfied: decorator in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (5.2.1)
Requirement already satisfied: ipython-pygments-lexers in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (1.1.1)
Requirement already satisfied: jedi>=0.16 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (0.19.2)
Requirement already satisfied: matplotlib-inline in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (0.1.7)
Requirement already satisfied: pexpect>4.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (4.9.0)
Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (3.0.52)
Requirement already satisfied: pygments>=2.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (2.19.2)
Requirement already satisfied: stack_data in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipython>=5.3.0->pyvis->vuecore) (0.6.3)
Requirement already satisfied: wcwidth in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=5.3.0->pyvis->vuecore) (0.2.13)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jedi>=0.16->ipython>=5.3.0->pyvis->vuecore) (0.8.5)
Requirement already satisfied: MarkupSafe>=2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from jinja2>=2.9.6->pyvis->vuecore) (3.0.2)
Requirement already satisfied: pytz>=2020.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pandas->vuecore) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pandas->vuecore) (2025.2)
Requirement already satisfied: ptyprocess>=0.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pexpect>4.3->ipython>=5.3.0->pyvis->vuecore) (0.7.0)
Requirement already satisfied: json5>=0.8.4 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from reactome2py>=3.0.0->PyWGCNA!=2.2.0->acore->vuecore) (0.12.1)
Requirement already satisfied: charset_normalizer<4,>=2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from requests->vuecore) (3.4.3)
Requirement already satisfied: idna<4,>=2.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from requests->vuecore) (3.10)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from requests->vuecore) (2.5.0)
Requirement already satisfied: certifi>=2017.4.17 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from requests->vuecore) (2025.8.3)
Requirement already satisfied: memoir>=0.0.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from rsrc>=0.1.3->PyWGCNA!=2.2.0->acore->vuecore) (0.0.3)
Requirement already satisfied: reprit>=0.3.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from rsrc>=0.1.3->PyWGCNA!=2.2.0->acore->vuecore) (0.9.0)
Requirement already satisfied: joblib>=1.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from scikit-learn>=1.5->acore->vuecore) (1.5.2)
Requirement already satisfied: threadpoolctl>=3.1.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from scikit-learn>=1.5->acore->vuecore) (3.6.0)
Requirement already satisfied: patsy>=0.5.6 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from statsmodels->acore->vuecore) (1.0.1)
Requirement already satisfied: donfig>=0.8 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (0.8.1.post1)
Requirement already satisfied: numcodecs>=0.14 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from numcodecs[crc32c]>=0.14->zarr!=3.0.*,>=2.18.7->anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (0.16.2)
Requirement already satisfied: pyyaml in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from donfig>=0.8->zarr!=3.0.*,>=2.18.7->anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (6.0.2)
Requirement already satisfied: crc32c>=2.7 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from numcodecs[crc32c]>=0.14->zarr!=3.0.*,>=2.18.7->anndata>=0.10.8->PyWGCNA!=2.2.0->acore->vuecore) (2.7.1)
Requirement already satisfied: soupsieve>1.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from beautifulsoup4->vuecore) (2.8)
Requirement already satisfied: mpmath>=1.1.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from combat->acore->vuecore) (1.3.0)
Requirement already satisfied: ipywidgets>=7.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from cyjupyter->vuecore) (8.1.7)
Requirement already satisfied: comm>=0.1.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipywidgets>=7.0.0->cyjupyter->vuecore) (0.2.3)
Requirement already satisfied: widgetsnbextension~=4.0.14 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipywidgets>=7.0.0->cyjupyter->vuecore) (4.0.14)
Requirement already satisfied: jupyterlab_widgets~=3.0.15 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from ipywidgets>=7.0.0->cyjupyter->vuecore) (3.0.15)
Requirement already satisfied: Flask<3.2,>=1.0.4 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dash->vuecore) (3.1.2)
Requirement already satisfied: Werkzeug<3.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dash->vuecore) (3.1.3)
Requirement already satisfied: importlib-metadata in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dash->vuecore) (8.7.0)
Requirement already satisfied: retrying in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dash->vuecore) (1.4.2)
Requirement already satisfied: nest-asyncio in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dash->vuecore) (1.6.0)
Requirement already satisfied: blinker>=1.9.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash->vuecore) (1.9.0)
Requirement already satisfied: click>=8.1.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash->vuecore) (8.2.1)
Requirement already satisfied: itsdangerous>=2.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from Flask<3.2,>=1.0.4->dash->vuecore) (2.2.0)
Requirement already satisfied: narwhals>=1.15.1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from plotly->vuecore) (2.4.0)
Requirement already satisfied: openpyxl in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from dsp-pandas->acore->vuecore) (3.1.5)
Requirement already satisfied: zipp>=3.20 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from importlib-metadata->dash->vuecore) (3.23.0)
Requirement already satisfied: fastcluster in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from inmoose->acore->vuecore) (1.3.0)
Requirement already satisfied: choreographer>=1.0.10 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from kaleido->vuecore) (1.0.10)
Requirement already satisfied: logistro>=1.0.8 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from kaleido->vuecore) (1.1.0)
Requirement already satisfied: orjson>=3.10.15 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from kaleido->vuecore) (3.11.3)
Requirement already satisfied: pytest-timeout>=2.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from kaleido->vuecore) (2.4.0)
Requirement already satisfied: simplejson>=3.19.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from choreographer>=1.0.10->kaleido->vuecore) (3.20.1)
Requirement already satisfied: pytest>=7.0.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pytest-timeout>=2.4.0->kaleido->vuecore) (8.4.2)
Requirement already satisfied: iniconfig>=1 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pytest>=7.0.0->pytest-timeout>=2.4.0->kaleido->vuecore) (2.1.0)
Requirement already satisfied: pluggy<2,>=1.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pytest>=7.0.0->pytest-timeout>=2.4.0->kaleido->vuecore) (1.6.0)
Requirement already satisfied: autograd>=1.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from lifelines->acore->vuecore) (1.8.0)
Requirement already satisfied: autograd-gamma>=0.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from lifelines->acore->vuecore) (0.5.0)
Requirement already satisfied: formulaic>=0.2.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from lifelines->acore->vuecore) (1.2.0)
Requirement already satisfied: interface-meta>=1.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from formulaic>=0.2.2->lifelines->acore->vuecore) (1.3.0)
Requirement already satisfied: wrapt>=1.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from formulaic>=0.2.2->lifelines->acore->vuecore) (1.17.3)
Requirement already satisfied: regex>=2021.8.3 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nltk->vuecore) (2025.9.1)
Requirement already satisfied: tqdm in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from nltk->vuecore) (4.67.1)
Requirement already satisfied: et-xmlfile in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from openpyxl->dsp-pandas->acore->vuecore) (2.0.0)
Requirement already satisfied: pandas-flavor in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pingouin->acore->vuecore) (0.7.0)
Requirement already satisfied: tabulate in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pingouin->acore->vuecore) (0.9.0)
Requirement already satisfied: xarray in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pandas-flavor->pingouin->acore->vuecore) (2025.9.0)
Requirement already satisfied: annotated-types>=0.6.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pydantic->vuecore) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pydantic->vuecore) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from pydantic->vuecore) (0.4.1)
Requirement already satisfied: executing>=1.2.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from stack_data->ipython>=5.3.0->pyvis->vuecore) (2.2.1)
Requirement already satisfied: asttokens>=2.1.0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from stack_data->ipython>=5.3.0->pyvis->vuecore) (3.0.0)
Requirement already satisfied: pure-eval in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from stack_data->ipython>=5.3.0->pyvis->vuecore) (0.2.3)
Requirement already satisfied: numba>=0.51.2 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from umap-learn->acore->vuecore) (0.61.2)
Requirement already satisfied: pynndescent>=0.5 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from umap-learn->acore->vuecore) (0.5.13)
Requirement already satisfied: llvmlite<0.45,>=0.44.0dev0 in /home/docs/checkouts/readthedocs.org/user_builds/vuecore/envs/34/lib/python3.12/site-packages (from numba>=0.51.2->umap-learn->acore->vuecore) (0.44.0)
Note: you may need to restart the kernel to use updated packages.

Hide code cell content

import os

IN_COLAB = "COLAB_GPU" in os.environ

Hide code cell content

# Create a directory for outputs
output_dir = "./outputs"
os.makedirs(output_dir, exist_ok=True)

0.2. Importing libraries#

# Imports
import pandas as pd
import numpy as np
from pathlib import Path

from vuecore.plots.basic.bar import create_bar_plot

0.3. Create sample data#

We create a synthetic dataset representing the relative abundances of common bacterial genera across various environmental samples.

# Set a random seed for reproducibility of the synthetic data
np.random.seed(42)

# Sample types and bacterial genera
sample_types = ["Soil", "Freshwater", "Ocean", "Sediment", "Wastewater"]
genera = [
    "Pseudomonas", "Bacillus", "Escherichia", "Streptococcus",
    "Lactobacillus", "Bacteroides", "Clostridium", "Staphylococcus",
    "Enterobacter", "Klebsiella", "Salmonella", "Shigella", "Vibrio"
]

def make_sample(sample: str, genera: list[str]) -> list[dict]:
    """
    Generate synthetic microbial abundance data for a single sample.

    Parameters
    ----------
    sample : str
        The sample type (e.g., 'Soil', 'Ocean', etc).
    genera : list[str]
        List of all possible bacterial genera.

    Returns
    -------
    list[dict]
        A list of dictionaries, each containing: Sample name, Genus,
        Relative abundance, and Genera count.
    """
    # Randomly pick a subset of genera present in this sample
    selected = np.random.choice(genera, np.random.randint(5, len(genera) + 1), replace=False)
    
    # Generate random raw abundances (shifted by +0.1 to avoid zeros)
    raw = np.random.rand(len(selected)) + 0.1
    
    # Normalize abundances so they sum to exactly 100%
    abundances = (raw / raw.sum()) * 100
    
    # Count how many genera are present
    genera_count = len(selected)
    
    # Store results into list of dicts
    return [
        {"Sample": sample,
         "Genus": genus,
         "Relative_Abundance": abund,
         "Genera_Count": genera_count}
        for genus, abund in zip(selected, abundances)
    ]

# Generate full dataset by combining all samples
abund_df = pd.DataFrame(
    [row for sample in sample_types for row in make_sample(sample, genera)]
)
abund_df.head()
Sample Genus Relative_Abundance Genera_Count
0 Soil Klebsiella 4.142384 11
1 Soil Shigella 12.807301 11
2 Soil Pseudomonas 2.667787 11
3 Soil Vibrio 14.020172 11
4 Soil Bacteroides 17.713758 11

1. Basic Bar Plot#

A basic bar plot can be created by simply providing the x and y columns from the DataFrame, along with style options like title.

# Create a df with unique samples and their genera counts
bar_plot_basic_df = abund_df.drop_duplicates(subset="Sample")[["Sample", "Genera_Count"]]

# Define output path for the basic png plot
file_path_basic_png = Path(output_dir) / "bar_plot_basic.png"

# Generate the basic bar plot
bar_plot_basic = create_bar_plot(
    data=bar_plot_basic_df,
    x="Sample",
    y="Genera_Count",
    title="Genera Count by Sample Type",
    file_path=file_path_basic_png,  
)

bar_plot_basic.show()
[VueCore] Chrome not found. Attempting automatic install using `kaleido.get_chrome_sync()`...
[VueCore] Plot saved to outputs/bar_plot_basic.png

2. Advanced Bar Plot#

Here is an example of an advanced stacked bar plot with more descriptive parameters, including color grouping, text annotations, hover tooltips, and export to HTML.

# Define the output file path for the HTML plot
file_path_adv_html = Path(output_dir) / "bar_plot_advanced.html"

# Generate the advanced stacked bar plot
bar_plot_adv = create_bar_plot(
    data=abund_df,                
    x="Sample",                   
    y="Relative_Abundance",            
    color="Genus",             
    barmode="stack",                   
    title="Taxonomic Profile of Environmental Samples",
    subtitle="Relative Abundance of Bacterial Genera",
    labels={                           
        "Sample": "Environmental Sample Type",
        "Relative_Abundance": "Relative Abundance (%)",
        "Genus": "Genus"
    },
    hover_name="Genus",        
    hover_data=["Relative_Abundance"], 
    opacity=0.9,                       
    file_path=file_path_adv_html,
)

bar_plot_adv.show()
[VueCore] Plot saved to outputs/bar_plot_advanced.html