
Multiplatform plotting library inspired by the Grammar of Graphics, enabling creation of customizable visualizations. Supports interactive plotting in various notebooks and embedding in applications. Features include polar coordinates, curve geometries, and advanced customization options.
Lets-Plot is a multiplatform plotting library built on the principles of the Grammar of Graphics.
The library design is heavily influenced by Leland Wilkinson's work The Grammar of Graphics describing the deep features that underlie all statistical graphics.
This grammar [...] is made up of a set of independent components that can be composed in many different ways. This makes [it] very powerful because you are not limited to a set of pre-specified graphics, but you can create new graphics that are precisely tailored for your problem.
- Hadley Wickham, "ggplot2: Elegant Graphics for Data Analysis"
A bridge between R (ggplot2) and Python data visualization.
To learn more, see the documentation site at lets-plot.org/python.
Create plots in Kotlin Notebook,
Datalore, Jupyter with Kotlin Kernel
or any other notebook that supports Kotlin Kernel.
To learn more, see the Lets-Plot Kotlin API project at GitHub.
Embed Lets-Plot charts in Compose Multiplatform applications.
To learn more, see the Lets-Plot Compose Frontend project at GitHub.
Embed Lets-Plot charts in JVM (Swing, JavaFX) and Kotlin/JS applications.
To learn more, see the Lets-Plot Kotlin API project at GitHub.
Kotlin API documentation site: lets-plot.org/kotlin.
Scientific mode in PyCharm and in IntelliJ IDEA provides support for interactive scientific computing and data visualization.
Lets-Plot in SciView plugin adds support for interactive plotting to IntelliJ-based IDEs with the Scientific mode enabled.
Note: The Scientific mode is NOT available in communinty editions of JetBrains IDEs.
Also read:
The geom_smooth() layer now includes a labels parameter designed to display statistical summaries of the fitted model directly on the plot.
This parameter accepts a smooth_labels() object, which provides access to model-specific variables like $R^2$ and the regression equation.
See example notebook.
Plot tags are short labels attached to a plot.
See example notebook.
New geometries designed primarily for significance bars (p-values) annotations in categorical plots.
See: example notebook.
The cmap parameter now allows you to specify a list of hex color codes for visualizing grayscale images.
Also, the new cguide parameter lets you customize the colorbar for grayscale images.
See example notebook.
Generates a list of hex color codes that can be used with scale_color_manual() to maintain consistent colors across multiple plots.
See: example notebook.
Controls how colors are generated when more colors are needed than the palette provides.
Options: 'interpolate' ('i'), 'cycle' ('c'), 'generate' ('g').
See: example notebook.
Specifies a fixed distance between axis breaks.
See examples:
The axis_minor_ticks and axis_minor_ticks_length parameters in theme().
See: example notebook.
Pan/Zoom now propagates across subplots with shared axes (sharex/sharey).
See: example notebook.
See CHANGELOG.md for a full list of changes.
This project and the corresponding community are governed by the JetBrains Open Source and Community Code of Conduct. Please make sure you read it.
Code and documentation released under the MIT license. Copyright © 2019-2025, JetBrains s.r.o.
Lets-Plot is a multiplatform plotting library built on the principles of the Grammar of Graphics.
The library design is heavily influenced by Leland Wilkinson's work The Grammar of Graphics describing the deep features that underlie all statistical graphics.
This grammar [...] is made up of a set of independent components that can be composed in many different ways. This makes [it] very powerful because you are not limited to a set of pre-specified graphics, but you can create new graphics that are precisely tailored for your problem.
- Hadley Wickham, "ggplot2: Elegant Graphics for Data Analysis"
A bridge between R (ggplot2) and Python data visualization.
To learn more, see the documentation site at lets-plot.org/python.
Create plots in Kotlin Notebook,
Datalore, Jupyter with Kotlin Kernel
or any other notebook that supports Kotlin Kernel.
To learn more, see the Lets-Plot Kotlin API project at GitHub.
Embed Lets-Plot charts in Compose Multiplatform applications.
To learn more, see the Lets-Plot Compose Frontend project at GitHub.
Embed Lets-Plot charts in JVM (Swing, JavaFX) and Kotlin/JS applications.
To learn more, see the Lets-Plot Kotlin API project at GitHub.
Kotlin API documentation site: lets-plot.org/kotlin.
Scientific mode in PyCharm and in IntelliJ IDEA provides support for interactive scientific computing and data visualization.
Lets-Plot in SciView plugin adds support for interactive plotting to IntelliJ-based IDEs with the Scientific mode enabled.
Note: The Scientific mode is NOT available in communinty editions of JetBrains IDEs.
Also read:
The geom_smooth() layer now includes a labels parameter designed to display statistical summaries of the fitted model directly on the plot.
This parameter accepts a smooth_labels() object, which provides access to model-specific variables like $R^2$ and the regression equation.
See example notebook.
Plot tags are short labels attached to a plot.
See example notebook.
New geometries designed primarily for significance bars (p-values) annotations in categorical plots.
See: example notebook.
The cmap parameter now allows you to specify a list of hex color codes for visualizing grayscale images.
Also, the new cguide parameter lets you customize the colorbar for grayscale images.
See example notebook.
Generates a list of hex color codes that can be used with scale_color_manual() to maintain consistent colors across multiple plots.
See: example notebook.
Controls how colors are generated when more colors are needed than the palette provides.
Options: 'interpolate' ('i'), 'cycle' ('c'), 'generate' ('g').
See: example notebook.
Specifies a fixed distance between axis breaks.
See examples:
The axis_minor_ticks and axis_minor_ticks_length parameters in theme().
See: example notebook.
Pan/Zoom now propagates across subplots with shared axes (sharex/sharey).
See: example notebook.
See CHANGELOG.md for a full list of changes.
This project and the corresponding community are governed by the JetBrains Open Source and Community Code of Conduct. Please make sure you read it.
Code and documentation released under the MIT license. Copyright © 2019-2025, JetBrains s.r.o.