# ezio (just an altair wrapper)
> I will dedicate my life to make people stop using plotly.
>
> -- <cite>Benjamin Franklin</cite>
The idea behind this package is quite simple: create a wrapper of [altair](https://altair-viz.github.io/) similar to what [plotly-express](https://plotly.com/python/plotly-express/) did for plotly.
My hope is to remove friction while creating simple plots. Big focus on interaction between subplots that I think is the killing feature of `altair`.
The motto of this packae is modularity. No fuctions with 1 billion parameters (I'm looking at you plotly) but rather multiple methods to concatenate at will.
## Demo
In this marimo you will find few examples.
Here a tiny demo:
```
import polars as pl
import ezioaltair as ez
import numpy as np
from datetime import date
N = 100
data = pl.DataFrame({
'time': pl.date_range(start=date(2025, 1, 1),
end=date(2025, 1, 1) + pl.duration(days=N-1),
interval='1d',
eager=True),
'var1': (np.random.randn(N) + np.linspace(0, 10, N)).tolist(),
'var2': (np.random.randn(N)*0.2 + np.sin(np.linspace(0, 10, N))).tolist(),
})
(
ez.LineChart(data=data,
x='time',
y=['var1', 'var2'],
colors=['red', 'black'], ytitle='y axis title', xtitle='x axis')
.add_view(y=['var1'])
.add_scatter(x='var1', y='var2', highlight_color='green', color='blue')
.add_title('This is a title')
.render(height=300, width=500)
)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/clarkmaio/ezio",
"name": "ezioaltair",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "altair data-visualization plotting wrapper",
"author": "clarkmaio",
"author_email": "maioliandrea0@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/8d/ce/5043e55499216de87ab839ab6e5a6496d2cd2ff91f509589d45753f059e8/ezioaltair-0.1.2.tar.gz",
"platform": null,
"description": "\n\n# ezio (just an altair wrapper)\n\n> I will dedicate my life to make people stop using plotly.\n>\n> -- <cite>Benjamin Franklin</cite>\n\n\nThe idea behind this package is quite simple: create a wrapper of [altair](https://altair-viz.github.io/) similar to what [plotly-express](https://plotly.com/python/plotly-express/) did for plotly.\n\nMy hope is to remove friction while creating simple plots. Big focus on interaction between subplots that I think is the killing feature of `altair`.\n\nThe motto of this packae is modularity. No fuctions with 1 billion parameters (I'm looking at you plotly) but rather multiple methods to concatenate at will.\n\n\n\n## Demo\n\nIn this marimo you will find few examples.\n\nHere a tiny demo:\n\n\n```\nimport polars as pl\nimport ezioaltair as ez\nimport numpy as np\nfrom datetime import date\n\nN = 100\ndata = pl.DataFrame({\n 'time': pl.date_range(start=date(2025, 1, 1), \n end=date(2025, 1, 1) + pl.duration(days=N-1), \n interval='1d',\n eager=True),\n 'var1': (np.random.randn(N) + np.linspace(0, 10, N)).tolist(),\n 'var2': (np.random.randn(N)*0.2 + np.sin(np.linspace(0, 10, N))).tolist(),\n})\n\n(\n ez.LineChart(data=data, \n x='time', \n y=['var1', 'var2'],\n colors=['red', 'black'], ytitle='y axis title', xtitle='x axis')\n .add_view(y=['var1'])\n .add_scatter(x='var1', y='var2', highlight_color='green', color='blue')\n .add_title('This is a title')\n .render(height=300, width=500)\n)\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "A simple, opinionated wrapper for Altair visualizations.",
"version": "0.1.2",
"project_urls": {
"Homepage": "https://github.com/clarkmaio/ezio"
},
"split_keywords": [
"altair",
"data-visualization",
"plotting",
"wrapper"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "90729a3c6b317a8b5e976b780ffc82b550ae02be89b03342d4940d50352b0dc7",
"md5": "54cdc6503282f2663bd37f84dc36b3ec",
"sha256": "d86376b2494e45da9c335d683d164eaf2f5a37c3ffe03a4f6b2cfe94f6004494"
},
"downloads": -1,
"filename": "ezioaltair-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "54cdc6503282f2663bd37f84dc36b3ec",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 9687,
"upload_time": "2025-08-22T05:19:35",
"upload_time_iso_8601": "2025-08-22T05:19:35.328503Z",
"url": "https://files.pythonhosted.org/packages/90/72/9a3c6b317a8b5e976b780ffc82b550ae02be89b03342d4940d50352b0dc7/ezioaltair-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8dce5043e55499216de87ab839ab6e5a6496d2cd2ff91f509589d45753f059e8",
"md5": "b27924c779e94347f3d4429f6bfdc4c7",
"sha256": "f46660f73404ef3197a361144b45c8f7a0236bd1328cc56554e3b1387c076601"
},
"downloads": -1,
"filename": "ezioaltair-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "b27924c779e94347f3d4429f6bfdc4c7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 8718,
"upload_time": "2025-08-22T05:19:37",
"upload_time_iso_8601": "2025-08-22T05:19:37.274046Z",
"url": "https://files.pythonhosted.org/packages/8d/ce/5043e55499216de87ab839ab6e5a6496d2cd2ff91f509589d45753f059e8/ezioaltair-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-22 05:19:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "clarkmaio",
"github_project": "ezio",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "altair",
"specs": []
},
{
"name": "polars",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "marimo",
"specs": []
},
{
"name": "dotenv-python",
"specs": []
},
{
"name": "setuptools",
"specs": []
},
{
"name": "wheel",
"specs": []
},
{
"name": "twine",
"specs": []
}
],
"lcname": "ezioaltair"
}