Skip to main content

An open source library for statistical plotting

Project description

Lets-Plot for Python

Latest Release
License
OS Linux, MacOS, Windows
Python versions 3.6, 3.7, 3.8

Implementation Overview

The Lets-Plot python extension includes native backend and a Python API, which was mostly based on the ggplot2 package well-known to data scientists who use R.

R ggplot2 has extensive documentation and a multitude of examples and therefore is an excellent resource for those who want to learn the grammar of graphics.

Note that the Python API being very similar yet is different in detail from R. Although we have not implemented the entire ggplot2 API in our Python package, we have added a few new features to our Python API.

You can try the Lets-Plot library in Datalore. Lets-Plot is available in Datalore out-of-the-box and is almost identical to the one we ship as PyPI package. This is because Lets-Plot is an offshoot of the Datalore project from which it was extracted to a separate plotting library.

One important difference is that the python package in Datalore is named datalore.plot and the package you install from PyPI has name lets_plot.

The advantage of Datalore as a learning tool in comparison to Jupyter is that it is equipped with very friendly Python editor which comes with auto-completion, intentions, and other useful coding assistance features.

Installation

1. For Linux and Mac users:

To install the Lets-Plot library, run the following command:

pip install lets-plot

2. For Windows users:

Install Anaconda3 (or Miniconda3), then install MinGW toolchain to Conda:

conda install m2w64-toolchain

Install the Lets-Plot library:

pip install lets-plot

Quick start with Jupyter

To evaluate the plotting capabilities of Lets-Plot, add the following code to a Jupyter notebook:

import numpy as np
from lets_plot import *
LetsPlot.setup_html()        

np.random.seed(12)
data = dict(
    cond=np.repeat(['A','B'], 200),
    rating=np.concatenate((np.random.normal(0, 1, 200), np.random.normal(1, 1.5, 200)))
)

ggplot(data, aes(x='rating', fill='cond')) + ggsize(500, 250) \
+ geom_density(color='dark_green', alpha=.7) + scale_fill_brewer(type='seq') \
+ theme(axis_line_y='blank')
Couldn't load quickstart.png


Example Notebooks

Try the following examples to study more features of the Lets-Plot library.

Quickstart and more

GeoDataFrame support (Shapely and GeoPandas).

GeoPandas GeoDataFrame is supported by the following geometry layers: geom_polygon, geom_map, geom_point, geom_text, geom_rect.

Couldn't load kotlin_island.png

Nonstandard plotting functions

The following features of Lets-Plot are not available or have different implementation in other Grammar of Graphics libraries.

  • ggsize() - sets the size of the plot. Used in many examples starting from quickstart.

  • geom_density2df() - fills space between equal density lines on a 2D density plot. Similar to geom_density2d but supports the fill aesthetic.

    Example: density_2d.ipynb

  • geom_contourf() - fills space between the lines of equal level of the bivariate function. Similar to geom_contour but supports the fill aesthetic.

    Example: contours.ipynb

  • geom_image() - displays an image specified by a ndarray with shape (n,m) or (n,m,3) or (n,m,4).

    Example: image_101.ipynb

    Example: image_fisher_boat.ipynb

  • gg_image_matrix() - a utility helping to combine several images into one graphical object.

    Example: image_matrix.ipynb

GGBanch

GGBunch allows to show a collection of plots on one figure. Each plot in the collection can have arbitrary location and size. There is no automatic layout inside the bunch.

Examples:

Data sampling

Sampling is a special technique of data transformation, which helps dealing with large datasets and overplotting.

Learn more about sampling in Lets-Plot.

Cloud-based notebooks

Examples:

Interesting demos

A set of interesting notebooks using Lets-Plot library for visualization.
Couldn't load klein_bottle.png

SVG/HTML export to file

export_svg function takes plot specification and filename as parameters and saves SVG representation of the plot to a file in the current working directory.

from lets_plot import *
p = ggplot()...

# export SVG to file
from lets_plot.export.simple import export_svg

export_svg(p, "p.svg")

Note: The simple.export_svg() function do not save images of an interactive map.

export_html function takes plot specification and filename as parameters and saves dynamic HTML to a file in the current working directory. When viewing this content the internet connection is required.

export_html has one more option - iframe. If iframe=True then Lets-PLot will wrap output HTML into iframe.

from lets_plot import *
p = ggplot()...

# export HTML to file
from lets_plot.export.simple import export_html

export_html(p, "p.htm")

Example notebook: export_SVG_HTML

Offline mode

In classic Jupyter notebook the LetsPlot.setup_html() statement by default pre-loads Lets-Plot JS library from CDN. Alternatively, option offline=True will force Lets-Plot adding the full Lets-Plot JS bundle to the notebook. In this case, plots in the notebook will be working without an Internet connection.

from lets_plot import *

LetsPlot.setup_html(offline=True)

Scientific mode in IntelliJ IDEA / PyCharm

JetBrains Plugins JetBrains plugins

Plugin "Lets-Plot in SciView" is available at the JetBrains Plugin Repository.

The plugin adds support for interactive plots in IntelliJ-based IDEs with the enabled Scientific mode.

To learn more about the plugin check: Lets-Plot in SciView plugin homepage.

Couldn't load pycharm_quickstart.png Couldn't load pycharm_logo.png

What is new in 1.4.0

Interactive maps

Function geom_livemap() enables a researcher to visualize geospatial information on interactive map.

Couldn't load map_path.png

When building interactive geospatial visualizations with Lets-Plot the visualisation workflow remains the same as when building a regular ggplot2 plot.

However, geom_livemap() creates an interactive base-map super-layer and certain limitations do apply comparing to a regular ggplot2 geom-layer:

  • geom_livemap() must be added as a 1-st layer in plot;
  • Maximum one geom_livemap() layer is alloed per plot;
  • Not any type of geometry can be combined with interactive map layer in one plot;
  • Internet connection to map tiles provider is required.

The following ggplot2 geometry can be used with interactive maps:

  • geom_point
  • geom_rect
  • geom_path
  • geom_polygon
  • geom_segment
  • geom_text
  • geom_tile
  • geom_vline, geon_hline
  • geom_bin2d
  • geom_contour, geom_contourf
  • geom_density2d, geom_density2df

Examples:

Function as_discrete()

The function as_discrete() is used to annotate a numeric data series as categorical data for the purposes of given visualization.

Code example:

from lets_plot.mapping import as_discrete

mpg_plot + geom_point(aes(color='cyl'))\
         + geom_smooth(aes(color=as_discrete('cyl')), method='lm', deg=2, size=1)

Example notebook: geom_smooth.ipynb

Polynomial regression of arbitrary degree in geom_smooth

New parameter deg in geom_smooth() allows to adjust the degree of the model polynomial when using linear model smoothing method.

Code example:

# Apply 2nd degree polynomial regression 
p + geom_smooth(method='lm', deg=2)

Example notebook: geom_smooth.ipynb

Hiding tooltips on axis

There are new parameters axis_tooltip, axis_tooltip_x and axis_tooltip_y in the function theme() which allow to hide tooltip on axis X, axis Y or on the both axis.

Code example:

# Hide tooltips on both axis.
p + theme(axis_tooltip='blank')

Change Log

See Lets-Plot at Github.

License

Code and documentation released under the MIT license. Copyright © 2019-2020, JetBrains s.r.o.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

lets_plot-1.5.0rc1-cp38-cp38-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.8Windows x86-64

lets_plot-1.5.0rc1-cp38-cp38-manylinux1_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.8

lets_plot-1.5.0rc1-cp38-cp38-macosx_10_9_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

lets_plot-1.5.0rc1-cp37-cp37m-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.7mWindows x86-64

lets_plot-1.5.0rc1-cp37-cp37m-manylinux1_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.7m

lets_plot-1.5.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

lets_plot-1.5.0rc1-cp36-cp36m-win_amd64.whl (2.3 MB view details)

Uploaded CPython 3.6mWindows x86-64

lets_plot-1.5.0rc1-cp36-cp36m-manylinux1_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.6m

lets_plot-1.5.0rc1-cp36-cp36m-macosx_10_9_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file lets_plot-1.5.0rc1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for lets_plot-1.5.0rc1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3241132c549bad817ce10aba24cd33044ecc0ab92a9666fafedfdc49018a8aa0
MD5 c1f351ade2905023d165024a3a458767
BLAKE2b-256 27d2bd2358d8575acce23fc0e38ac81a2bbb2045841fd3a74a42fd75fa9b8c4b

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8b663507bb17653695da88b74216bb9ce956d4a77531f33f106f710b4ef9aaef
MD5 dad310c74b6ee2903559cb56497a135a
BLAKE2b-256 a43408cb54ba0e1c92920366aa8053f6108ef51ac0904c97d50f7ba79ca2916b

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a5398d74f8f6b6135270bcf50aa4778780948ac330fee0066338c651d89b4507
MD5 21b79bbd73a96cd0f6776a30f98e1d35
BLAKE2b-256 60954d776105cb59bac446ac0fb209073a407dea46dc29c02dd388d4807fb024

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for lets_plot-1.5.0rc1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 dd03fbc963aedf9ee4f4580a53a1e563c95aaed703e8845d942ba5d5c3699440
MD5 a961abd9e5906bbd35d2555f09cd3435
BLAKE2b-256 9f3acb22eeabe4ed4eded9ffa5f2c69e27beb2e81dbe80230c4c8e162deb4b13

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cf8c37f850dbcd8fdbcae6319905663caf192d6acc34f205619c90af3b0e88b6
MD5 f064906c0f20ee60f18a094e47bc102e
BLAKE2b-256 5dbe258c8dd269b038ac0daf0652b47e97eca2ed30b5e983b1c9e1582f044b84

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 150e5129cf59af9bb75a5c71cccbbc2bbaa5941a4e856c7385687fbca1156d94
MD5 bf7a88b576e5d265a39991e7eaf0bb39
BLAKE2b-256 f93eb77af0b1f6cec60ef71dce274fa388814600b99308cd94fc6f0d5823a030

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.1

File hashes

Hashes for lets_plot-1.5.0rc1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 f17059e6795385db47d29ea906f25c7e263220e4c81e0a27524f67c29be51990
MD5 7926b32a92038a936cbac1f70a62be79
BLAKE2b-256 5836ac8e468a0efeae198692846e26d369d870ee163dd64f1ff6ca0c89fc64b0

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 578a46bd9ea75915f391bca291786be7c05279cab071124e2b4c0f48b7d1f2f9
MD5 2fea42a8ffa2cfa5ecccbf42eb84ee8b
BLAKE2b-256 e3e9bc91b087f42bd2ebd69bfcb2c5e728ca2c48fbd79251320f97ae2abcf44e

See more details on using hashes here.

File details

Details for the file lets_plot-1.5.0rc1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lets_plot-1.5.0rc1-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3.post20200330 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

File hashes

Hashes for lets_plot-1.5.0rc1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d90c8d8bcbd4b42b6043a7beab827b84b2cfc58513f4ee79f2da37b4bf258ed1
MD5 ca3d023604cc6033b01da2d8a55fe967
BLAKE2b-256 449aa32bebd5b8cbe5e6e4e02a06f04fe42dc5d5055f790ed9befca023b7ba43

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page