pyecharts 渲染圖片

2023-02-17 11:12 更新

使用 pyecharts 渲染成圖片一直是開(kāi)發(fā)者比較關(guān)心的功能,pyecharts 提供了 ?selenium?, ?phantomjs ?和 ?pyppeteer ?三種方式。

make_snapshot

make_snapshot 用于 pyecharts 直接生成圖片

引入

from pyecharts.render import make_snapshot

API

def make_snapshot(
    # 渲染引擎,可選 selenium 或者 phantomjs
    engine: Any,

    # 傳入 HTML 文件路徑
    file_name: str,

    # 輸出圖片路徑
    output_name: str,

    # 延遲時(shí)間,避免圖還沒(méi)渲染完成就生成了圖片,造成圖片不完整
    delay: float = 2,

    # 像素比例,用于調(diào)節(jié)圖片質(zhì)量
    pixel_ratio: int = 2,

    # 渲染完圖片是否刪除原 HTML 文件
    is_remove_html: bool = False,

    # 瀏覽器類(lèi)型,目前僅支持 Chrome, Safari,使用 snapshot-selenium 時(shí)有效
    browser: str = "Chrome",
    **kwargs,
)

snapshot-selenium

安裝

$ pip install snapshot-selenium

snapshot-selenium 是 pyecharts + selenium 渲染圖片的擴(kuò)展,使用 selenium 需要配置 browser driver,這部分可以參考 selenium-python 相關(guān)介紹,推薦使用 Chrome 瀏覽器,可以開(kāi)啟 headless 模式。目前支持 Chrome, Safari。

使用

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot

from snapshot_selenium import snapshot

def bar_chart() -> Bar:
    c = (
        Bar()
        .add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
        .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
        .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
        .reversal_axis()
        .set_series_opts(label_opts=opts.LabelOpts(position="right"))
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-測(cè)試渲染圖片"))
    )
    return c

make_snapshot(snapshot, bar_chart().render(), "bar0.png")

snapshot-phantomjs

安裝

$ pip install snapshot-phantomjs

snapshot-phantomjs 是 pyecharts + phantomjs 渲染圖片的擴(kuò)展,需要先安裝 phantomjs,安裝方法請(qǐng)參照官網(wǎng) phantomjs.org/download.html

使用

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot

from snapshot_phantomjs import snapshot

def bar_chart() -> Bar:
    c = (
        Bar()
        .add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風(fēng)衣", "高跟鞋", "襪子"])
        .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
        .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
        .reversal_axis()
        .set_series_opts(label_opts=opts.LabelOpts(position="right"))
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-測(cè)試渲染圖片"))
    )
    return c

make_snapshot(snapshot, bar_chart().render(), "bar0.png")

snapshot-pyppeteer

安裝

$ pip install snapshot-pyppeteer

# 安裝完后建議執(zhí)行 chromium 安裝命令
pyppeteer-install

snapshot-pyppeteer 是 pyecharts + pyppeteer 渲染圖片的擴(kuò)展,需要先安裝 pyppeteer 和 Chromium 安裝方法請(qǐng)參照倉(cāng)庫(kù)地址 snapshot-pyppeteer

使用

from snapshot_pyppeteer import snapshot

from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.render import make_snapshot


def bar_base() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標(biāo)題"))
    )
    make_snapshot(snapshot, c.render(), "bar.png")


if __name__ == '__main__':
    bar_base()


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)