Skip to main content

Unified API and style for Python plotting libraries

Project description


python PyPI - Version marimo jupyter license

Unified API and style for Python plotting libraries.

Usage

plotly matplotlib
import numpy as np
import uplt

x = np.linspace(0, np.pi*4, num=100)
phi = np.pi/4

fig = uplt.figure('plotly')
fig.plot(x, np.sin(x - 0*phi), name='#1')
fig.plot(x, np.sin(x - 1*phi), name='#2')
fig.plot(x, np.sin(x - 2*phi), name='#3')
fig.plot(x, np.sin(x - 3*phi), name='#4')
fig.xlabel('X').ylabel('Y')
fig.legend().show()
import numpy as np
import uplt

x = np.linspace(0, np.pi*4, num=100)
phi = np.pi/4

fig = uplt.figure('matplot')
fig.plot(x, np.sin(x - 0*phi), name='#1')
fig.plot(x, np.sin(x - 1*phi), name='#2')
fig.plot(x, np.sin(x - 2*phi), name='#3')
fig.plot(x, np.sin(x - 3*phi), name='#4')
fig.xlabel('X').ylabel('Y')
fig.legend().show()

[!TIP] See gallery for more examples.

Install

Recent stable version (without any plotting library):

pip install uplt-py

To automatically install all optional dependencies (matplotlib, plotly, ...):

pip install "uplt-py[all]"

If you need only matplotlib support:

pip install "uplt-py[matplot]"

[!TIP] Replace [matplot] with [plotly] for plotly-only installation

Plotting Libs - Pros & Cons

Matplotlib

🟢 Highly configurable.
🟢 Good documentation and a lot of ready-to-use recipes (e.g. on StackOverflow).
🟡 Common API (MATLAB legacy).

🔴 Limited interactivity (especially for Jupyter).
🔴 API, behavior and parameter names are inconsistent (e.g. plt.xlim and axis.set_xlim).
🔴 Slow and limited 3D rendering.

Plotly

🟢 Very good interactivity.
🟢 Native compatibility with Jupyter.
🟢 Possibility to save interactive plot (html-file).
🟢 Fast and interactive 3D plot.

🔴 Not well documented (a lot of parameters, small amount of examples).
🔴 High memory consumption (limited number of plots in Jupyter).
🔴 Some expected API functions are missing (e.g. imshow).
🔴 3D and 2D axis parameters are not unified (e.g. layout.xaxis doesn't work for 3D).

Functions

Function Description
plot(x, y, z)
plot(obj)
Plot 2D or 3D line.
Line plot for custom class (supported by a plugin).
scatter(x, y, z)
scatter(obj)
Scatter plot for 2D or 3D data points.
Scatter plot for custom class (supported by a plugin).
surface3d(x, y, z) Plot a surface in 3D space where the color scale corresponds to the z-values.
bar(x, y) Create a bar plot.
imshow(image) Display an image.
heatmap(data) Display 2D heatmap with colorbar.
hline(y)
vline(x)
Plot horizontal or vertical line. 2D only
title(text) Set the title of the figure.
legend(show) Show or hide the legend on the figure.
grid(show) Show or hide the grid on the figure.
xlabel(text)
ylabel(text)
zlabel(text)
Set the label for the x, y, z-axis.
xlim(min, max)
ylim(min, max)
zlim(min, max)
Set limits for the x, y, z-axis.
xscale()
yscale()
Set scale for the x, y-axis: 'linear' or 'log'.
current_color()
scroll_color(count)
reset_color()
Get the color which will be used for the next plot.
Scroll a list of predefined colors for plots.
Set the current color to the start of the list.
axis_aspect(mode) Set the aspect ratio of the axis.
as_image() Get the figure as a NumPy array.
save(filename) Save the figure to a file.
close() Close the figure. Free allocated resources.
show(block) Display the figure.

Plugin System

uplt is designed to be extensible. You can register plugins to visualize custom objects via plot() or scatter() functions. E.g. if plugin for pd.DataFrame is registered, you can plot DataFrame columns directly:

import uplt
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/car_crashes.csv')

fig = uplt.figure()
fig.plot(df[['total', 'speeding', 'alcohol']])
fig.show()

[!TIP] For detailed instructions on creating plugins, please see PLUGIN.md.

Dependencies

  • Python ≥ 3.10
  • NumPy ≥ 1.21 v2.0 supported
  • pillow ≥ 10.3

Optional

  • matplotlib ≥ 3.7
  • plotly ≥ 5.17

License

This software is licensed under the BSD-3-Clause license. See the LICENSE file for details.

Project details


Download files

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

Source Distribution

uplt_py-0.9.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

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

uplt_py-0.9.0-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file uplt_py-0.9.0.tar.gz.

File metadata

  • Download URL: uplt_py-0.9.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.13

File hashes

Hashes for uplt_py-0.9.0.tar.gz
Algorithm Hash digest
SHA256 ea9621d7ab9b2fd594531b94a9dcaaa654daa677d1c570e1284e0a99d0a23698
MD5 54dae8ac179b0b232805019ed192472e
BLAKE2b-256 a8f8c08b42fb02f1ed38bf1b091af1ede01c52d3ce31949792defcabb4dd460f

See more details on using hashes here.

File details

Details for the file uplt_py-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: uplt_py-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 35.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.13

File hashes

Hashes for uplt_py-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2add27c81d6bd5356406eae1b7834583fca3f59258e03db7e7e6658f19b465ea
MD5 a490b28747b099c2ced309c0c89ac26b
BLAKE2b-256 ee65de85b1edc5745a7ff0f05059c49f5f867253126eeece81a3cb5396732f5b

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