将Vega-Lite图表规范转换为SVG、PNG或Vega
项目描述
概述
vl-convert-python
是一个无需依赖的Python包,用于将 Vega-Lite 图表规范转换为静态图像(SVG或PNG)或 Vega 图表规范。
由于Altair图表可以生成Vega-Lite,因此可以使用此包轻松地将Altair图表转换为静态图像。
安装
可以使用pip通过以下方式安装 vl-convert-python
$ pip install vl-convert-python
用法
vl-convert-python
包在 vl_convert
模块下提供一系列转换函数。
将Vega-Lite转换为SVG、PNG和Vega
可以使用 vegalite_to_svg
和 vegalite_to_png
函数分别将Vega-Lite规范转换为静态SVG和PNG图像。可以使用 vegalite_to_vega
函数将Vega-Lite规范转换为Vega规范。
import vl_convert as vlc
import json
vl_spec = r"""
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {"url": "https://raw.githubusercontent.com/vega/vega-datasets/next/data/movies.json"},
"mark": "circle",
"encoding": {
"x": {
"bin": {"maxbins": 10},
"field": "IMDB Rating"
},
"y": {
"bin": {"maxbins": 10},
"field": "Rotten Tomatoes Rating"
},
"size": {"aggregate": "count"}
}
}
"""
# Create SVG image string and then write to a file
svg_str = vlc.vegalite_to_svg(vl_spec=vl_spec)
with open("chart.svg", "wt") as f:
f.write(svg_str)
# Create PNG image data and then write to a file
png_data = vlc.vegalite_to_png(vl_spec=vl_spec, scale=2)
with open("chart.png", "wb") as f:
f.write(png_data)
# Create low-level Vega representation of chart and write to file
vg_spec = vlc.vegalite_to_vega(vl_spec)
with open("chart.vg.json", "wt") as f:
json.dump(vg_spec, f)
将Altair图表转换为SVG、PNG和Vega
Altair可视化库提供了一种Pythonic API来生成Vega-Lite可视化。因此,可以使用 vl-convert-python
将Altair图表转换为PNG、SVG或Vega。 vegalite_*
函数支持一个可选的 vl_version
参数,可以用来指定要使用的特定版本的Vega-Lite JavaScript库。Altair包的版本4.2使用Vega-Lite版本4.17,因此在将Altair图表转换为时,应指定此版本。
import altair as alt
from vega_datasets import data
import vl_convert as vlc
import json
source = data.barley()
chart = alt.Chart(source).mark_bar().encode(
x='sum(yield)',
y='variety',
color='site'
)
# Create SVG image string and then write to a file
svg_str = vlc.vegalite_to_svg(chart.to_json(), vl_version="4.17")
with open("altair_chart.svg", "wt") as f:
f.write(svg_str)
# Create PNG image data and then write to a file
png_data = vlc.vegalite_to_png(chart.to_json(), vl_version="4.17", scale=2)
with open("altair_chart.png", "wb") as f:
f.write(png_data)
# Create low-level Vega representation of chart and write to file
vg_spec = vlc.vegalite_to_vega(chart.to_json(), vl_version="4.17")
with open("altair_chart.vg.json", "wt") as f:
json.dump(vg_spec, f)
工作原理
本软件包使用PyO3将vl-convert-rs
Rust 软件包封装为 Python 库。该 vl-convert-rs
软件包是一个独立的 Rust 库,用于将Vega-Lite 可视化规范转换为各种格式。转换操作使用在由 deno_runtime
软件包提供的 v8 JavaScript 运行时中运行的 Vega-Lite 和 Vega JavaScript 库执行。字体指标和 SVG-to-PNG 转换由 resvg
软件包提供。
值得注意的是,vl-convert-python
完全独立,不依赖于外部网页浏览器或 Node.js 运行时。
开发设置
创建开发 conda 环境
$ conda create -n vl-convert-dev -c conda-forge python=3.10 deno maturin altair pytest black black-jupyter scikit-image
激活环境并使用 pip 安装剩余的依赖项
$ conda activate vl-convert-dev
$ pip install pypdfium2
切换到 Python 包目录
$ cd vl-convert-python
使用 maturin 在开发模式下构建 Rust Python 包
$ maturin develop --release
运行测试
$ pytest tests
项目详情
vl_convert_python-1.6.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b70935dbf792118a42aae27b7465359cbc014e30e63ef6ba7a0f8974707d9c1c |
|
MD5 | d4a6e6c3e862b3cb3cf9a9dfc3b16255 |
|
BLAKE2b-256 | 63d01e4d68882359c783570a272844afd0485f1f181767a91074e5b11cf2b51d |
vl_convert_python-1.6.1-cp37-abi3-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cafcafc03b2c85925f969f917727b213fb1b6bfb3809b05a673f26f85b0510d0 |
|
MD5 | d498382f0f2fc55291f545cb51752c2f |
|
BLAKE2b-256 | b7affcbea1ede66d2edf327b38aac5d104ce301a01efa7e27df68522e2f0d46e |
vl_convert_python-1.6.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 12d8adb1e243f1f73424506c05adb80b7e99a507c54ca1b8c52122c599d7baaa |
|
MD5 | 94c7cbe0919f7b11bbc07f37fc9ec9cc |
|
BLAKE2b-256 | fd203bf57999bddfec74622a1f6f2b10e5205e8d8af664a17c7d6af36d87e94e |
vl_convert_python-1.6.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 28532e54d76a99eedcaec39b98b0b87f09ad24b23a2e129438cfbd27fd0ec001 |
|
MD5 | 52e908db7b1c381a9027f097d71fbc12 |
|
BLAKE2b-256 | 0d49826b73cbe8440522fc24fe5360f4c98c8a7be8e1cc8abad1fac3b11296e6 |
vl_convert_python-1.6.1-cp37-abi3-macosx_11_0_arm64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf0ede6afa4cdfc39d0649beeedad9b93790d8bbcceab125c0d45b5a6b6e77f3 |
|
MD5 | bdebd06431972949b20f19516e24537b |
|
BLAKE2b-256 | 04f5f62f594208b3c597016c810fddd7c14ea4c185ae937cf5b87707210a2003 |
vl_convert_python-1.6.1-cp37-abi3-macosx_10_12_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b531ef9b674530e8aac91682d4db1ae66b616fddfd68f482ea9ceae03dec9e78 |
|
MD5 | 0a67868136c2a15c6849a2f7588ae2b0 |
|
BLAKE2b-256 | ba9a476a51dc05cac44ebf4fc88eb19571c02b65b416a102830a44bccac2e2cd |