別找了,這才是 Pyecharts 的正確打開方式!

2022-01-02 小詹學Python

大家好,我是早起。

如果你嘗試用 Python 進行可視化,會發現用起來很爽,但是保存或者展示確稍顯麻煩。

就拿 pyehcharts 來說,如果在需要展示的時候啟動 notebook 現場執行代碼,這應該是最麻煩的方式。

另一種思路是導出為 html 或其他靜態文件,打開進行展示,這也是一種不錯的方式,但是如果有很多個圖表呢?

你會說,pyecharts 自帶圖表組合,將多個圖表組合在一起輸出到一個 html 中,但凡是用過這個功能的人都會說不僅難用,並且很難增加一些自定義的元素。

當然,去年分享過一篇結合 PPT 展示的教程,確實是一個不錯的選擇,但是也稍顯麻煩。

所以,在之前,我的一個解決方案是將這一堆圖表輸出為 html 格式,然後使用 iframe 嵌入前端頁面中,當然這是基於 Django ,並且需要自己寫前端的 style ,就像去年分享的疫情追蹤大屏

但是吧,又是逃不過 Django 這樣的大傢伙,配置起來對不熟悉的小白來說是非常折磨的。

那有沒有更優雅的方法?選 PyWebIO !還是將圖表放在網頁上,任何人都能訪問查看交互式圖表與源碼,就像這樣👇

就像上面展示的一樣,不論是 pyecharts 還是 plotly 還是 bokeh 都可以完美的掛在網站上,按照自己預設的方式,保留一些交互功能與源碼查看!並且更重要的是,我們可以自由排列組合頁面內容,並且根據需要添加更多的自定義元素! 下面就來介紹下製作過程。

如何實現

和之前的文章一樣,我們先思考一下如何實現,是先生成 html 還是打開頁面時生成?

實際上還是事先生成的,同時保留html和py腳本,所以最簡單的一個 pyecharts 代碼可以這麼寫

from pywebio.output import put_html
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker


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="我是副標題"))
    
)

c.width = "100%"
put_html(c.render_notebook())

第一部分是 pyecharts 製作圖表的部分,不多解釋

重要的是最後一行,通過 put_html() 嵌入 PyWebIO 中,這樣我們這個圖的腳本就搞定了,接下來只要如法炮製,製作更多的圖表腳本。

下面是主函數部分,如何將這些腳本嵌入並展示,首先是搜索全部腳本文件,之後使用open(html_file).read()打開之前生成的圖表,再使用put_collapse(t('Show source code', '查看源碼'), put_code(code, 'python'))預覽代碼即可,代碼如下

@use_scope('content', clear=True)
def show_demo(name):
    if name not in t(all_demos, all_demos_zh):
        return

    with use_scope('loading'):
        put_text('Loading...')
        put_loading()

    base_dir = path.join(src_path, name)
    files = os.listdir(base_dir)
    for file in files:
        if not file.endswith('.py'):
            continue
        name = file[:-len(".py")]

        html_file = path.join(base_dir, 'output', name) + '.html'
        try:
            code = open(path.join(base_dir, file)).read()
            html = open(html_file).read()
        except:
            continue

        put_html(html)

        # todo: if there is `open` calls, provide the file link
        put_collapse(t('Show source code', '查看源碼'), put_code(code, 'python'))

    scroll_to(position='top')
    clear('loading')

最後使用 put_buttons() 添加按鈕

put_buttons([(v, k) for k, v in t(all_demos, all_demos_zh).items()], onclick=show_demo)

再啟動項目即可看到我們製作的展示頁面

start_server(pyecharts, port=8080, debug=True, auto_open_webbrowser=False)

最終效果如下

最後只要將項目部署到到伺服器,你就可以讓任何人看到你的可視化項目,是不是很酷!

當然,上面是基於 pyecharts 進行講解,實際上適用於任何 Python 可視化庫,只要按照相同的辦法製作即可,並且更重要的是,我們可以自由排列組合頁面內容,並且根據需要添加更多的自定義元素!

本文的代碼參考官方文檔 (https://github.com/wang0618/pywebio-chart-gallery/tree/master/pyecharts_demo)感興趣的讀者可以下載嘗試!

各位夥伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種乾貨和資源,也方便大家閱讀,感興趣的小夥伴請移步小程序體驗一下哦!(歡迎提建議)

相關焦點

  • pyecharts的繪圖原理詳解
    因此你想要學好這個可視化工具,最主要的就是要學會它的繪圖邏輯,俗話說:「知己知彼,百戰不殆」,你只有了解別人 ,才可以用起來順手呀。pyecharts的繪圖邏輯分為以下幾步。第一步是選擇圖表類型,基於自己的數據特點,我們看看自己想要繪製那種圖形,需要什麼圖形就導入什麼圖形,下面我簡單列舉了幾個導入方法。
  • pyecharts學習筆記(1)--5分鐘上手pyecharts
    今天來學習pyecharts這個庫。我們先從一個簡單的開始入手,懂畫圖的基本操作,然後再細緻地學習具體的圖例等相關知識。直接繪製一個簡單的圖:1.快速上手#採用鏈式調用的方式進行from pyecharts.charts bar = (    Bar()    .add_xaxis(["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"])    .add_yaxis("商家",[5,20,36,10,75,90]) )bar.render
  • 如何把pyecharts的炫酷延續到PPT裡!?
    大家好,我是小z這幾天,群裡有些小夥伴被一個奇怪的需求困住:「pyecharts作圖既炫酷,又交互。但是,這個炫酷的效果往往只存在於分析師自己的編輯器中,充其量也就是生成一個html文件來嗨一嗨,有沒有什麼辦法能夠嵌入PPT呢?」「為什麼想要嵌入PPT呢?」我有點疑惑。
  • 想搞懂pyecharts可視化?10分鐘你信不信?
    __version__)pyecharts繪圖邏輯pyecharts是一個全新的可視化繪圖工具,因此它的繪圖邏輯完全不同於前面說到的matplotlib。因此你想要學好這個可視化工具,最主要的就是要學會它的繪圖邏輯,俗話說:「知己知彼,百戰不殆」,你只有了解別人 ,才可以用起來順手呀。pyecharts的繪圖邏輯分為以下幾步。
  • 基於Python的數據可視化庫pyecharts介紹
    什麼是pyecharts?  pyecharts 是一個用於生成 Echarts 圖表的類庫。 echarts 是百度開源的一個數據可視化 JS 庫,主要用於數據可視化。pyecharts 是一個用於生成 Echarts 圖表的類庫。實際上就是 Echarts 與 Python 的對接。使用 pyecharts 可以生成獨立的網頁,也可以在 flask , Django 中集成使用。
  • Pyecharts十類頂級圖,都很實用!
    使用pip install pyecharts 安裝,安裝後的版本為 v1.6pyecharts幾行代碼就能繪製出有特色的的圖形,繪圖API鏈式調用,使用方便。2 漏鬥圖from pyecharts import options as optsfrom pyecharts.charts
  • 【Python】用pyecharts繪製我國人口分布和遷移地圖
    由於我國省份較多,把數據放在地圖上展示會更加清晰,故本文用Python中的pyecharts庫進行人口分布和遷移繪圖展示。pyecharts的地圖數據主要來源於兩個模塊,一是Map,二是Geo。Map模塊主要實現「世界」、「國家」、「省」、「縣市」等行政地圖的顯示,而Geo主要實現熱力圖等功能地圖的顯示。本文致力於讓大家學會用Python在地圖上進行數據展示。
  • pyecharts繪圖——河流圖展示
    下面我們來一起了解一下吧~基本語法pyecharts繪製過程可以劃為圖表函數、全局配置、add數據、系列配置這幾模塊,最後再導出展示圖表就可以了。首先要調用圖表函數,其餘三項順序不限。1.圖表函數圖表函數很簡單,你想要畫什麼圖表,就調用相應的圖表函數。
  • 畫圖神器pyecharts-旭日圖
    當數據分析遇上數據可視化時,pyecharts 誕生了。看看繪圖結果,可以非常清晰,動態的表達層次關係數據(代碼在文末)當然,excel也是可以畫旭日圖的:Excel:臥槽,原來我的可視化也這麼優秀(旭日圖-一個值得收藏的圖)from pyecharts.charts
  • 乾貨|且看Pyecharts如何製作多個子圖
    本文轉載自【微信公眾號:數據分析與籃球,ID:dylanxia2019】經微信公眾號授權轉載,如需轉載與原文作者聯繫小編將對Pyecharts繪製多個子圖的能力進行簡單的展示,並且將其應用在具體的案例之上來進行演示,
  • PyEcharts 繪製時間輪播圖
    對於pyecharts繪圖庫,知道了它的繪圖原理後,不管繪製任何圖形難度並不是很大,唯一難住我們的就是pyecharts的參數太多,我們並不會用,因此就必須學會使用官網。下圖是官方提供的繪製時間輪播圖的一個案例,本文就是藉助這個案例的代碼,完成今天這個文章的操作。在講述本文之前,為了滿足大家的好奇心,我們先來看看最終做出來的效果呈現。那麼,今天的這個案例是怎麼做出來的?我們一步步為大家講解。
  • wxpy庫+Pyecharts庫:用Python對微信好友進行數據分析
    於是選用了Pyecharts庫繪製圖表。網絡上可能有一些教程,但是百看不如一做,通過自己實操解決問題,才能在一邊寫bug一邊解決的道路上成長嘛。相比其他繪圖模塊,Pyecharts庫上手容易,代碼簡單,繪製的圖形美觀,可交互。但是在實操過程中,發現Pyecharts的操作教程挺少的,網上代碼千篇一律,遇到需要定製化修改的時候,著實頭疼了一把。
  • 怎樣繪製漂亮的統計圖表|柱狀圖的正確打開方式
    這位讀者使用的是之前講解過的pyecharts,並且曾經諮詢過我相關問題,柱狀圖的寬度比上一位好了一點,整體比例也還行,並且還加上了具體的數值,可是你不覺得中間那一塊看著不協調嗎,最大值3000多最小值11你也敢讓他們同時出現,
  • 【免費贈書】使用 pyechart 輕鬆玩轉數據可視化
    (點擊上方公眾號,可快速關注一起學Python)pyecharts是一個用於生成Echarts圖表的類庫;而Echarts是百度開源的一個數據可視化
  • 從官方文檔學pyecharts(Scatter、Overlap)
    在之前,我們學習了許多pyecharts的圖表,我們的學習進度:        基本圖表(2/13)
  • 親愛的,這才是中國地圖正確的打開方式
    @自然資源部 指出了問題地圖存在的多項錯誤, 同時表態:正確的國家版圖是國家主權和領土完整的象徵,體現了國家在主權方面的意志和在國際社會中的政治、外交立場。將進一步強化國家版圖意識的宣傳教育,提升公民的國家版圖意識,優化標準地圖服務,更好的引導公眾正確使用各類地圖。