Skip to main content

A plotly-express style API for pyecharts — build ECharts with concise, dataframe-friendly calls.

Project description

pyecharts-express

Python License: MIT Tests PyPI version

A plotly-express style API for pyecharts (ECharts).

Pass a pandas DataFrame or list[dict] directly and build charts with intuitive keywords like x / y / color. Every function returns a plain pyecharts Chart object, so the standard pyecharts API (.render(), .render_notebook(), Grid composition, etc.) stays fully available afterwards.


Features

  • 📊 plotly-express style signaturesbar(df, x="city", y="pop", color="region")
  • 🐼 pandas-friendly — accepts DataFrame / list[dict] / dict
  • 🎨 pyecharts-compatible — returns a raw Chart, freely customizable
  • 🧩 covers the plotly-express chart surface using native ECharts series/options
  • 🪶 lightweight — a thin wrapper layer; the full power of pyecharts is reachable
  • 🎛️ plotly-express compatible optionscolor_discrete_sequence / color_discrete_map, log_x / log_y, range_x / range_y, labels, opacity, orientation, symbol
  • 🧪 testedpytest covers every chart type and the new options (87 tests)

Installation

pip install pyecharts-express
# or
uv add pyecharts-express

Quick start

import pandas as pd
import pyecharts_express as px

df = pd.DataFrame({
    "city":   ["Tokyo", "Osaka", "Kyoto", "Nagoya"],
    "pop":    [139, 27, 15, 23],
    "region": ["Kanto", "Kansai", "Kansai", "Chubu"],
})

chart = px.bar(df, x="city", y="pop", color="region", title="Population")
chart.render("bar.html")
# chart.render_notebook()   # inline display in Jupyter

Chart reference

pyecharts-express mirrors the major plotly-express functions. Functions with no pyecharts class are mapped directly to native ECharts APIs when ECharts itself supports them. Features that would require a custom series remain unsupported.

Basic

Function Description Key args
px.bar Bar chart x, y, color, stack
px.line Line chart x, y, color, smooth
px.scatter Scatter plot x, y, color
px.area Area chart x, y, color, stack
px.funnel Funnel chart names, values, sort
px.funnel_area Area funnel names, values

Part-of-whole

Function Description Key args
px.pie Pie chart names, values, hole, rose_type
px.sunburst Sunburst path or (names, parents), values
px.treemap Treemap path or (names, parents), values
px.icicle Icicle path or (names, parents), values

Distributions

Function Description Key args
px.histogram Histogram x, bins, density
px.box / px.boxplot Box plot x, y
px.violin ❌ unsupported (requires custom rendering)
px.strip Strip plot (ECharts 6 native jitter) x, y, color, jitter
px.density_heatmap 2D histogram x, y, bins
px.density_contour ❌ unsupported (requires custom rendering)

Matrix

Function Description Key args
px.imshow Scalar matrix via ECharts heatmap x, y, zmin, zmax, origin

Polar

Function Description Key args
px.bar_polar Polar bar theta, r, color, stack
px.line_polar Polar line theta, r, color
px.scatter_polar Polar scatter theta, r, color

Maps

Function Description Key args
px.map_choropleth / px.choropleth Choropleth map names, values, maptype
px.scatter_geo Geo scatter lon, lat, maptype
px.line_geo Geo line lon, lat, maptype

Multidimensional

Function Description Key args
px.scatter_matrix Scatter plot matrix (SPLOM) dimensions, color
px.parallel_coordinates Parallel coordinates dimensions, color
px.parallel_categories Parallel categories dimensions, color
px.scatter_3d 3D scatter (ECharts GL) x, y, z, color
px.line_3d 3D line (ECharts GL) x, y, z, color
px.bar_3d 3D bar (ECharts GL) x, y, z, color
px.scatter_ternary ❌ unsupported (no ECharts equivalent)

Misc

Function Description Key args
px.radar Radar chart indicators, series
px.sankey Sankey diagram source, target, values
px.gauge Gauge values, min_, max_
px.graph Network graph source, target
px.themeriver Theme river date, value, category
px.calendar_heatmap Calendar heatmap date, value, year
px.wordcloud Word cloud words, values

Hierarchical data

sunburst / treemap / icicle accept two input shapes:

# 1. path (ordered hierarchy columns)
px.sunburst(df, path=["region", "pref", "city"], values="population")

# 2. names / parents (plotly style)
px.sunburst(df, names="node", parents="parent", values="value")

Input shapes

Every function accepts:

# 1. pandas DataFrame
px.bar(df, x="city", y="pop")

# 2. list[dict] (records)
px.line([{"x": 1, "y": 2}, {"x": 2, "y": 4}], x="x", y="y")

# 3. dict (column-oriented)
px.bar({"x": ["a", "b"], "y": [1, 2]}, x="x", y="y")

Common options

px.bar(
    df, x="city", y="pop",
    title="Title",
    xaxis_name="City",
    yaxis_name="Population",
    width="800px",
    height="500px",
    theme="dark",
)

Options (plotly-express compatible)

Most chart functions accept these shared keyword arguments:

Option Applies to Description
color_discrete_sequence bar, line, scatter, area, pie, funnel, radar Ordered list of CSS colors assigned to series in order
color_discrete_map bar, line, scatter, area, pie, funnel, radar Dict mapping series name → fixed CSS color
log_x / log_y bar, line, scatter, area, histogram, boxplot Use a logarithmic axis
range_x / range_y bar, line, scatter, area, histogram, boxplot (min, max) axis bounds
labels all Dict {column: display_name} renaming axis titles / categories / indicator names
opacity bar, line, scatter, area, pie, funnel, boxplot, histogram Item opacity 0–1
orientation bar "v" (default) or "h" (horizontal)
symbol / symbol_sequence scatter Marker shape ("circle", "rect", …)

Example:

chart = px.bar(
    df, x="city", y="pop", color="region",
    color_discrete_sequence=["#1f77b4", "#ff7f0e"],
    log_y=True,
    labels={"pop": "Population (log)"},
    opacity=0.8,
)

Interop with pyecharts

The return value is a raw pyecharts Chart, so you can extend it with the standard API:

chart = px.bar(df, x="city", y="pop")
chart.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
chart.render("custom.html")

Compose multiple charts with Grid / Page:

from pyecharts.charts import Page
page = Page()
page.add(px.bar(df, x="city", y="pop"))
page.add(px.line(df, x="city", y="pop"))
page.render("page.html")

Development

git clone https://github.com/tetsuji16/pyecharts-express
cd pyecharts-express
uv sync
uv run pytest

License

MIT

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

pyecharts_express-1.0.4.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

pyecharts_express-1.0.4-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file pyecharts_express-1.0.4.tar.gz.

File metadata

  • Download URL: pyecharts_express-1.0.4.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyecharts_express-1.0.4.tar.gz
Algorithm Hash digest
SHA256 317d40e2220fbfe6494495ba365a312f02a1255c70ac3496f7a17a692e7f59b4
MD5 94f2acee242203d407d78df41d735373
BLAKE2b-256 0fea034a73c959aedd988273629d26494febd083a9d65f30fea9f01213ba781c

See more details on using hashes here.

File details

Details for the file pyecharts_express-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: pyecharts_express-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for pyecharts_express-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 05d427f99de0afc660cf33f32a736a30c5e8cc9d1b9e00045619e8eba20ab1bb
MD5 3c7f41ded9eedf31deb54b33e9e63b17
BLAKE2b-256 32a5b403c17851a8d1c1583274521269082ba682a88716984acece1b677de65a

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