.. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg :alt: UltraPlot Logo :width: 100% |downloads| |build-status| |coverage| |docs| |pypi| |code-style| |pre-commit| |pr-welcome| |license| |zenodo| A succinct `matplotlib `__ wrapper for making beautiful, publication-quality graphics. It builds upon ProPlot_ and transports it into the modern age (supporting mpl 3.9.0+). .. _ProPlot: https://github.com/proplot-dev/ Why UltraPlot? | Write Less, Create More ========================================= .. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/logo/whyUltraPlot.svg :width: 100% :alt: Comparison of ProPlot and UltraPlot :align: center Checkout our examples ===================== Below is a gallery showing random examples of what UltraPlot can do, for more examples checkout our extensive `docs `_. View the full gallery here: `Gallery `_. .. list-table:: :widths: 33 33 33 :header-rows: 0 * - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/subplot_example.svg :alt: Subplots & Layouts :target: https://ultraplot.readthedocs.io/en/latest/subplots.html :width: 100% :height: 200px **Subplots & Layouts** Create complex multi-panel layouts effortlessly. - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/cartesian_example.svg :alt: Cartesian Plots :target: https://ultraplot.readthedocs.io/en/latest/cartesian.html :width: 100% :height: 200px **Cartesian Plots** Easily generate clean, well-formatted plots. - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/projection_example.svg :alt: Projections & Maps :target: https://ultraplot.readthedocs.io/en/latest/projections.html :width: 100% :height: 200px **Projections & Maps** Built-in support for projections and geographic plots. * - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/colorbars_legends_example.svg :alt: Colorbars & Legends :target: https://ultraplot.readthedocs.io/en/latest/colorbars_legends.html :width: 100% :height: 200px **Colorbars & Legends** Customize legends and colorbars with ease. - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/panels_example.svg :alt: Insets & Panels :target: https://ultraplot.readthedocs.io/en/latest/insets_panels.html :width: 100% :height: 200px **Insets & Panels** Add inset plots and panel-based layouts. - .. image:: https://ultraplot.readthedocs.io/en/latest/_static/example_plots/colormaps_example.svg :alt: Colormaps & Cycles :target: https://ultraplot.readthedocs.io/en/latest/colormaps.html :width: 100% :height: 200px **Colormaps & Cycles** Visually appealing, perceptually uniform colormaps. Documentation ============= The documentation is `published on readthedocs `__. Installation ============ UltraPlot is published on `PyPi `__ and `conda-forge `__. It can be installed with ``pip`` or ``conda`` as follows: .. code-block:: bash pip install ultraplot conda install -c conda-forge ultraplot The default install includes optional features (for example, pyCirclize-based plots). For a minimal install, use ``--no-deps`` and install the core requirements: .. code-block:: bash pip install ultraplot --no-deps pip install -r requirements-minimal.txt Likewise, an existing installation of UltraPlot can be upgraded to the latest version with: .. code-block:: bash pip install --upgrade ultraplot conda upgrade ultraplot To install a development version of UltraPlot, you can use ``pip install git+https://github.com/ultraplot/ultraplot.git`` or clone the repository and run ``pip install -e .`` inside the ``ultraplot`` folder. If you use UltraPlot in your research, please cite the latest release metadata in ``CITATION.cff``. GitHub can export this metadata as BibTeX from the repository's "Cite this repository" panel, and the Zenodo badge below points to the project DOI across releases. .. |downloads| image:: https://static.pepy.tech/personalized-badge/UltraPlot?period=total&units=international_system&left_color=black&right_color=orange&left_text=Downloads :target: https://pepy.tech/project/ultraplot :alt: Downloads .. |build-status| image:: https://github.com/ultraplot/ultraplot/actions/workflows/test-map.yml/badge.svg :target: https://github.com/ultraplot/ultraplot/actions/workflows/test-map.yml :alt: Build Status .. |coverage| image:: https://codecov.io/gh/Ultraplot/ultraplot/graph/badge.svg?token=C6ZB7Q9II4&style=flat&color=53C334 :target: https://codecov.io/gh/Ultraplot/ultraplot :alt: Coverage .. |docs| image:: https://readthedocs.org/projects/ultraplot/badge/?version=latest&style=flat&color=4F5D95 :target: https://ultraplot.readthedocs.io/en/latest/?badge=latest :alt: Docs .. |pypi| image:: https://img.shields.io/pypi/v/ultraplot?style=flat&color=53C334&logo=pypi :target: https://pypi.org/project/ultraplot/ :alt: PyPI .. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg?style=flat&logo=python :alt: Code style: black .. |pre-commit| image:: https://results.pre-commit.ci/badge/github/Ultraplot/ultraplot/main.svg :target: https://results.pre-commit.ci/latest/github/Ultraplot/ultraplot/main :alt: pre-commit.ci status .. |pr-welcome| image:: https://img.shields.io/badge/PRs-welcome-f77f00?style=flat&logo=github :alt: PRs Welcome .. |license| image:: https://img.shields.io/github/license/ultraplot/ultraplot.svg?style=flat&color=808080 :target: LICENSE.txt :alt: License .. |zenodo| image:: https://zenodo.org/badge/909651179.svg :target: https://doi.org/10.5281/zenodo.15733564 :alt: DOI