日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pyecharts运行了但是没有图_新版pyecharts,Python可视化so easy and powerful !

發布時間:2023/12/15 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyecharts运行了但是没有图_新版pyecharts,Python可视化so easy and powerful ! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:chenjiandongx
一個執迷于寫 bug 的程序員

pyecharts V1.0.0 版本正式發布啦!

What's New in pyecharts V1

pyecharts 經過了半年的沉寂后,終于發布了新版本啦!新版本號將從 v1.0.0 開始,這是一個全新的,向下不兼容的 pyecharts 版本。不過如果開發者以前接觸過 pyecharts 的話,新版本對于你們來說也是會很容易上手的。新版本修復 N 個 0.5.x 版本留下來的 bug。

1. 全面擁抱 Python3 和 TypeHint

pyecharts v1 停止對 Python2.7,3.4~3.5 版本的支持和維護,僅支持 Python3.6+。如果還不知道什么是 TypeHint 的同學,勸你盡早入坑,官方入坑指南?typing — Support for type hints。

在編程界,早已流傳著?動態一時爽,重構火葬場?這樣的真知灼見,動態語言類型檢查已經成為了一種趨勢,Javascript 已經有了 Typescript,Python 也在力推 TypeHint,雖然 Python 的 TypeHint 實際上對于程序的運行并沒有任何影響......,但它配合 IDE 和 mypy,或者 pyright 這樣的工具可以在開發階段趁早發現問題。

2. 棄用插件機制

pyecharts v1 廢除原有的插件機制,包括?地圖包插件?和?主題插件,插件的本質是提供 pyecharts 運行所需要的靜態資源文件(基本都是 .js 文件),所以現在開放了兩種模式提供靜態資源文件。

  • online 模式,使用 pyecharts 官方提供的 assets host,或者部署自己的 remote host。

  • local 模式,使用自己本地開啟的文件服務提供 assets host(離線模式)。

  • 棄用插件的理由

  • 原先的 pyecharts 插件機制分散,管理/升級并沒有想象中的方便,而且分開為 jupyter/local render 兩種情況,這就導致了兩個要分開管理,雖然我們的 pip 包可以同時 update 這兩種情況引用的 assets,但是由于存在緩存等因素,并不能保證每次都到正確的更新。

  • pyecharts 不用再依賴這些包,依賴包和 pyecharts 包版本的管理也是一個容易出問題的地方。

  • 減少維護工作,線上熱更新。

  • 3. 更加輕量級

    新本的 pyecharts 只依賴了兩個第三庫,jinja2 和 prettytable。這意味著 pyecharts 總體的體積將變小,安裝更加輕松,也可以很方便的進行離線安裝,配合上面講的 local 模式。

    4. 支持原生 JavaScript

    0.5.X 的版本,對原生 JavaScript 的支持還很局限,v1 版本徹底打通了任督二脈,支持傳入任意的 JavaScript 的代碼,任意的配置項回調函數。

    5. 支持 JupyterLab

    對 JupyterLab 的支持一直是很多開發者關心的功能,畢竟 JupyterLab 號稱是下一代的 Notebook。pyecharts v1 開始支持在 JupyterLab 中渲染圖表啦!

    Jupyter Notebook

    Jupyter Lab

    6. 代碼風格重構

    所有配置項均 OOP,在新版本的 pyecharts 中,一切皆 Options。配置項種類更多,可操作性更強,可以畫出更豐富的圖表,pyecharts 官方畫廊?pyecharts/pyecharts-gallery。

    0.5.X 版本寫法

    from pyecharts import Bar
    attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    bar = Bar("柱狀圖數據堆疊示例")
    bar.add("商家A", attr, v1, is_stack=True)
    bar.add("商家B", attr, v2, is_stack=True)
    bar.render()

    v1 版本寫法,支持鏈式調用,導包方式也發生了變化,所以不要再問為什么舊版的代碼運行不了啦!因為兩個版本根本就完全不兼容,當成一個新庫來學的話會好很多。

    import pyecharts.options as optsfrom pyecharts.charts import Bar
    attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
    v1 = [5, 20, 36, 10, 75, 90]
    v2 = [10, 25, 8, 60, 20, 80]
    bar = (
    Bar()
    .add_xaxis(attr)
    .add_yaxis("商家A", v1, stack="stack1")
    .add_yaxis("商家B", v2, stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="柱狀圖數據堆疊示例"))
    )
    bar.render("bar_stack.html")# 當然不習慣鏈式寫法的開發者仍舊可以使用
    bar.add_xaxis(attr)
    bar.add_yaxis("商家A", v1, stack="stack1")
    bar.add_yaxis("商家B", v2, stack="stack1")
    bar.render()

    v1 版本不僅支持 Opts 配置項作為參數傳入,同時也支持原生 dict 類型,也就意味著自己可以隨意擴展 pyecharts(如果你對 Echarts 有一定了解的話),而不用修改 pyecharts 源碼。

    bar.set_series_opts(label_opts=opts.LabelOpts(is_show=False))# 等價于
    bar.set_series_opts(label_opts={"show": False})

    具體參考 pyecharts/options 包。

    7. 支持 selenium/phantomjs 渲染圖片

    非必須,如果無此需求的開發者可忽略,并不會影響正常的使用。

    pyecharts v1 提供兩種模式渲染圖片,selenium 和 phantomjs,分別需要安裝?snapshot-selenium?和?snapshot-phantomjs。

    from pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.render import make_snapshotdef bar_chart() -> Bar:
    c = (
    Bar()
    .add_xaxis(["襯衫", "毛衣", "領帶", "褲子", "風衣", "高跟鞋", "襪子"])
    .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
    .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-測試渲染圖片"))
    )return cdef render_chart_by_selenium():from snapshot_selenium import snapshot
    make_snapshot(snapshot, bar_chart().render(), "bar0.png")def render_chart_by_phantomjs():from snapshot_phantomjs import snapshot
    make_snapshot(snapshot, bar_chart().render(), "bar1.png")

    8. 新增更多的圖表類型

    新增了圖表類型和組件類型

    旭日圖

    百度地圖

    很酷吧,你可以在 Notebook 環境中使用百度地圖,指哪打哪,媽媽再也不用擔心我地圖不夠用啦。

    組件類型

    9. 更加完善的文檔和示例

    經開發團隊決定,0.5.x 版本將不再進行維護,問題依舊可以提,但基本不會解決。0.5.x 版本代碼位于 05x 分支,文檔位于?https://05x-docs.pyecharts.org。v1 版本文檔位于?https://pyecharts.org。新版文檔中提供了更加豐富的示例,幫助開發者更容易入手 pyecharts。

    總結

    此次的重構主要原因是我發現 pyecharts 以前的設計實在是太糟糕了,導致后來版本的更新一直都是在為這糟糕設計打補丁。在某一個夜深人靜的夜晚,我下定了決心,他媽的,看不下去了,老子要重構,不要攔著我。在重構之前,正好那段時間在寫 Golang,所以就寫了一個?go-echarts,對 Golang 開發感興趣的開發者也可以關注一下。后來覺得 go-echarts 的接口設計還不錯,所以就搬到新版的 pyecharts 中來。新接口更加清晰,語義化。

    在重構的過程中也產生了很多的思考,如何把接口設計得簡單易用又有可擴展性,這個其實是有矛盾的地方在的,簡單易用意味著要盡量封裝實現細節,而可擴展性可定制性又意味著要盡量暴露底層接口,參數要靈活,但也不能直接就?*args, **kwargs,真心覺得,Python 這個傳參方式被過度使用了,很多庫為了追求方便,形參都是直接寫的?foo(*args, **kwargs),不仔細去閱讀具體實現邏輯你根本不知道它需要傳什么,然后傳的值是什么類型.... 我個人的觀點是,Keyword only+TypeHint 是最好的實踐,別懶,多寫幾行代碼,不然以后看起來連自己都懵。

    開發和維護 pyecharts 花費了我巨大的心力,如果你覺得項目幫助到您,請認真考慮請作者喝一杯咖啡??

    敲黑板

    參與貢獻

    期待能有更多的開發者參與到 pyecharts 的開發中來,我們會保證盡快 Reivew PR 并且及時回復。但提交 PR 請確保

  • 通過所有單元測試,如若是新功能,請為其新增單元測試

  • 遵守開發規范,使用 black 以及 isort 格式化代碼($ pip install -r requirements-dev.txt)

  • 如若需要,請更新相對應的文檔

  • 我們也非常歡迎開發者能為 pyecharts 提供更多的示例,共同來完善文檔,文檔項目位于?pyecharts/website

    感謝陪伴 pyecharts 一路走來的每個人,我相信 pyecharts 為很多的 python 開發者提供了方便的繪圖方式,我希望有提出問題的人,更希望有更多能夠一起解決問題的人,如果您真心想參與到開發中來,請及時聯系我,郵箱?chenjiandongx@qq.com。

    點擊閱讀原文進入相關github

    感謝閱讀

    推薦閱讀:

    1:【小編心得】互聯網公司實習一年,我被迫知道了這些內幕...

    2:我想加入阿里,我該怎么做

    3:1 行Python代碼能干哪些事,這 13個你知道嗎?

    4:2018年Python愛好者社區歷史文章合集(作者篇)

    5:2018年終精心整理|Python愛好者社區歷史文章合集(類型篇)

    總結

    以上是生活随笔為你收集整理的pyecharts运行了但是没有图_新版pyecharts,Python可视化so easy and powerful !的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。