2022-09-30    Share on: Twitter | Facebook | HackerNews | Reddit

10 Lesser-Known, Yet Powerful Python Plotting Libraries

The most widely used libraries for plotting in python are matplotlib, Plotly, seaborn, and bokeh. This article describes 10 other powerful plotting libraries available in Python that can be used to create high-quality plots and visualizations.

There are a few widely used plotting libraries used in python projects: matplotlib, plotly, seaborn , and Bokeh. However, the python ecosystem is not limited to these libraries. Many powerful and lesser-known plotting libraries in Python can be used to create high-quality plots and visualizations.

1. HoloViews GitHub stars shield

HoloViews logo

A library that makes it easy to create and interact with data visualizations in Python, using a high-level interface. The high-level interface refers to the library's ease of use and user-friendly design for creating and interacting with data visualizations in Python. This interface is designed to abstract away some of the complexities of the underlying plotting and data manipulation, making it simpler for users to create and customize their visualizations with minimal code. By default, HoloViews plots with Bokeh but has extensions for matplotlib and plotly. Gallery — HoloViews v1.15.3 Reference Gallery — HoloViews v1.15.3

2. Bqplot GitHub stars shield

Bqplot is a Python interactive data visualization library developed by researchers at Bloomberg. This is a 2D data visualization library based on the Jupyter interactive widget framework, which allows you to create interactive plots that can be easily embedded in notebooks.

3. PlotnineGitHub stars shield

Plotnine logo

Plotnine is a data visualization library for Python, based on the popular data visualization package ggplot2 for R programming language.

It is designed to mimic the syntax and structure of ggplot2, making it easy for R users to transition to using Python for data visualization. It provides a powerful and flexible way to create plots and charts by using a "grammar of graphics" approach, where the user can build plots by combining different elements such as layers, scales, and geoms.

The library provides a wide range of visualization options and customization capabilities for creating plots and charts, including bar plots, line plots, scatter plots, box plots, heat maps, and many more.

It is built on top of other libraries such as pandas and matplotlib, it allow to make complexe graphics with simple code. Additionally, plotnine supports a variety of input data formats, such as pandas dataframe, numpy arrays, and more. It also supports different types of output formats such as static image files and interactive web-based plots.

In short, plotnine is a great library for creating powerful, flexible, and customizable data visualizations in Python and it is designed for those familiar with R ggplot2 package.

Gallery — plotnine 0.10.1 documentation

4. Geoplotlib GitHub stars shield

A library for creating geospatial visualizations, which can be used to create maps, choropleths, and other types of geospatial plots.

5. Pygal GitHub stars shield

Pygal is a library for creating SVG charts and graphs, which provides a wide range of chart types and a simple interface for creating interactive plots.

6. Vincent GitHub stars shield

The concept behind this library is:

The data capabilities of Python. The visualization capabilities of JavaScript.

Vincent allows you to build Vega specifications in a Pythonic way and performs type-checking to help ensure that your specifications are correct. It also has a number of convenience chart-building methods that quickly turn Python data structures into Vega visualization grammar, enabling graphical exploration. It allows for quick iteration of visualization designs via getters and setters on grammar elements, and outputs the final visualization to JSON.

Perhaps most importantly, Vincent has Pandas-Fu, and is built specifically to allow for quick plotting of DataFrames and Series. Charts Library — Vincent 0.4 documentation

NOTE: The repository for vincent has been archived by the owner. It is now read-only. There is no active development ongoing on original repo.

7. PyNGL

A library for creating visualizations of scientific data, which provides a wide range of plotting and visualization options for working with multidimensional data. PyNGL Graphical Gallery

8. Ggplot GitHub stars shield

ggplot logo A library for creating plots using the Grammar of Graphics, which provides a high-level interface for creating a wide range of statistical plots.

9. PyQtGraph GitHub stars shield

PyQtGraph logo PyQtGraph is a pure-python graphics and GUI library built on PyQt / PySide and numpy. It is intended for use in mathematics / scientific / engineering applications. Despite being written entirely in python, the library is very fast due to its heavy leverage of NumPy for number crunching and Qt's GraphicsView framework for fast display

10. PyQwt

A library for creating 2D and 3D plots and visualizations, which is built on top of PyQt and provides a wide range of plotting and visualization options. PyQwt is a set of Python bindings for the Qwt C++ class library which extends the Qt framework with widgets for scientific and engineering applications. It provides a widget to plot 2-dimensional data and various widgets to display and control bounded or unbounded floating point values.

PyQwt addresses the problem of integrating PyQt, Qt, Qwt, NumPy and optionally SciPy. Look at the Command Line Interface (CLI) examples and the Graphical User Interface (GUI) examples to get an idea of what you can do with PyQwt.

11. Lets-plot

Lets-Plot  is a multiplatform plotting library based on the Grammar of Graphics. It's based on ggplot2-like grammar-of-graphics language. See examples here: https://lets-plot.org/pages/charts.html

Plotly Express GitHub stars shield

Plotly Express logo It is not a new plotting library but a high-level interface to Plotly, which allows you to create interactive plots and visualizations with minimal code.

Any comments or suggestions? Let me know.

To cite this article:

@article{Saf202210,
    author  = {Krystian Safjan},
    title   = {10 Lesser-Known, Yet Powerful Python Plotting Libraries},
    journal = {Krystian's Safjan Blog},
    year    = {2022},
}