PyEchart--數據分析師的利器

Echart

https://echarts.baidu.com/javascript

ECharts,一個使用 JavaScript 實現的開源可視化庫,能夠流暢的運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的矢量圖形庫 ZRender,提供直觀,交互豐富,可高度個性化定製的數據可視化圖表。css

豐富的可視化類型

ECharts 提供了常規的折線圖柱狀圖散點圖餅圖K線圖,用於統計的盒形圖,用於地理數據可視化的地圖熱力圖線圖,用於關係數據可視化的關係圖treemap旭日圖,多維數據可視化的平行座標,還有用於 BI 的漏斗圖儀表盤,而且支持圖與圖之間的混搭。html

 

PyEchart

Echarts 是一個由百度開源的數據可視化,憑藉着良好的交互性,精巧的圖表設計,獲得了衆多開發者的承認。而 Python 是一門富有表達力的語言,很適合用於數據處理。當數據分析趕上數據可視化時,pyecharts 誕生了。前端

 

✨ 特性

  • 簡潔的 API 設計,使用如絲滑般流暢,支持鏈式調用
  • 囊括了 30+ 種常見圖表,應有盡有
  • 支持主流 Notebook 環境,Jupyter Notebook 和 JupyterLab
  • 可輕鬆集成至 Flask,Sanic,Django 等主流 Web 框架
  • 高度靈活的配置項,可輕鬆搭配出精美的圖表
  • 詳細的文檔和示例,幫助開發者更快的上手項目
  • 多達 400+ 地圖文件,而且支持原生百度地圖,爲地理數據可視化提供強有力的支持

 

Why not matplotlib?

說道echart比它的優勢:java

(1) 類型多,依託echart庫。python

(2)可交互, 依託echart庫。jquery

(3)容易嵌入web頁面。支持先後端分離模式 和 不分離模式。git

 

共同點: 都是爲數據分析人員使用。github

 

實例

https://pyecharts.org/#/zh-cn/web_flaskweb

所有使用 python實現

示例代碼

from flask import Flask from jinja2 import Markup, Environment, FileSystemLoader from pyecharts.globals import CurrentConfig # 關於 CurrentConfig,可參考 [基本使用-全局變量] CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./templates")) from pyecharts import options as opts from pyecharts.charts import Bar app = Flask(__name__, static_folder="templates") def bar_base() -> Bar: c = ( Bar() .add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]) .add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) .add_yaxis("商家B", [15, 25, 16, 55, 48, 8]) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標題")) ) return c @app.route("/") def index(): c = bar_base() return Markup(c.render_embed()) if __name__ == "__main__": app.run()

 

先後端分離模式

Step 3: 新建一個 HTML 文件

新建 HTML 文件保存位於項目根目錄的 templates 文件夾,這裏以以下 index.html 爲例. 主要用到了 jquerypyecharts 管理的 echarts.min.js 依賴

index.html

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Awesome-pyecharts</title> <script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script> <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script> </head> <body> <div id="bar" style="width:1000px; height:600px;"></div> <script> $( function () { var chart = echarts.init(document.getElementById('bar'), 'white', {renderer: 'canvas'}); $.ajax({ type: "GET", url: "http://127.0.0.1:5000/barChart", dataType: 'json', success: function (result) { chart.setOption(result); } }); } ) </script> </body> </html>

Step 4: 編寫 flask 和 pyecharts 代碼渲染圖表

請將下面的代碼保存爲 app.py 文件並移至項目的根目錄下。

目錄結構以下

sunhailindeMacBook-Pro:pyecharts_flask sunhailin$ tree -L 1
.
├── app.py
└── templates

注: 目前因爲 json 數據類型的問題,沒法將 pyecharts 中的 JSCode 類型的數據轉換成 json 數據格式返回到前端頁面中使用。所以在使用先後端分離的狀況下儘可能避免使用 JSCode 進行畫圖。

app.py

from random import randrange from flask import Flask, render_template from pyecharts import options as opts from pyecharts.charts import Bar app = Flask(__name__, static_folder="templates") def bar_base() -> Bar: c = ( Bar() .add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]) .add_yaxis("商家A", [randrange(0, 100) for _ in range(6)]) .add_yaxis("商家B", [randrange(0, 100) for _ in range(6)]) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副標題")) ) return c @app.route("/") def index(): return render_template("index.html") @app.route("/barChart") def get_bar_chart(): c = bar_base() return c.dump_options() if __name__ == "__main__": app.run()
相關文章
相關標籤/搜索