1. 程式人生 > >【數據可視化-pyecharts】pyecharts快速入門

【數據可視化-pyecharts】pyecharts快速入門

pre use 實例 rabl show 12c 均可 python3.5 -o

pyecharts快速開始

首先開始來繪制你的第一個圖表

技術分享圖片

from pyecharts import Bar

bar = Bar("我的第一個圖表", "這裏是副標題")
bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90])
# bar.print_echarts_options() # 該行只為了打印配置項,方便調試時使用
bar.render()    # 生成本地 HTML 文件
  • add()
    主要方法,用於添加圖表的數據和設置各種配置項
  • print_echarts_options()

    打印輸出圖表的所有配置項
  • render()
    默認將會在根目錄下生成一個 render.html 的文件,支持 path 參數,設置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用瀏覽器打開。

Note: 可以按右邊的下載按鈕將圖片下載到本地,如果想要提供更多實用工具按鈕,請在 add() 中設置 is_more_utils 為 True

使用主題

自 0.5.2+ 起,pyecharts 支持更換主體色系。下面是跟換為 ‘dark‘ 的例子:

from pyecharts import Bar

bar = Bar("我的第一個圖表", "
這裏是副標題") bar.use_theme(dark) bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90]) bar.render()

pyecharts 支持另外 5 個主體色系,請移步到主題色系獲取更多配置信息。

技術分享圖片

使用主題插件

echarts 自帶 dark 主題,pyecharts 也就自帶了 dark。 echarts-themes-pypkg 主題插件提供了如下主題

  • vintage
  • macarons
  • infographic
  • shine
  • roma
  • westeros
  • wonderland
  • chalk
  • halloween
  • essos
  • walden
  • purple-passion
  • romantic

安裝主題插件

pip install echarts-themes-pypkg

使用主題

更換單個圖形主題

bar.use_theme("vintage")

更換運行環境內所有圖表主題

from pyecharts import configure

# 將這行代碼置於首部
configure(global_theme=dark)

bar = Bar()
# 其他代碼

主題風格

vintage

技術分享圖片

macarons

技術分享圖片

infographic

技術分享圖片

shine

技術分享圖片

roma

技術分享圖片

westeros

技術分享圖片

wonderland

技術分享圖片

chalk

技術分享圖片

halloween

技術分享圖片

essos

技術分享圖片

walden

技術分享圖片

purple-passion

技術分享圖片

romantic

技術分享圖片

圖形繪制過程

圖表類提供了若幹了構建和渲染的方法,在使用的過程中,建議按照以下的順序分別調用:

數據解析與導入篇:

參考:http://pyecharts.org/#/zh-cn/data_import?id=networkx-%E5%BA%93

介紹了一些常用的數據處理模塊和庫。這些並不是 pyecharts 核心的部分。

技術分享圖片
#add 數據直接支持 numpy.array 對象,例如:

from pyecharts import Bar
import numpy as np

clothes = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = np.array([5, 20, 36, 10, 75, 90])
bar = Bar("衣服銷量")
bar.add("商家A", clothes, v1, is_stack=True)
bar.render()
numpy 數據類型

技術分享圖片
#在 pyecharts.base.Base.add(name, x_axis, y_axis) 函數中,數據參數通常要求數據是兩個長度相等的列表。

from pyecharts import Line

t_data = [(21, 2017-12-01), (19, 2017-12-02), (20, 2017-12-03)]
hs, ds = zip(*t_data)
line = Line(High Temperature)
line.add(High, ds, hs)
line.render()
zip 函數

技術分享圖片
數據格式化處理函數,能夠將源數據轉化為符合 pyecharts 的數據。
具體轉化格式如下:

1、元組列表
[(A1, B1), (A2, B2), (A3, B3), (A4, B4)] --> k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]
2、字典列表
[{A1: B1}, {A2: B2}, {A3: B3}, {A4: B4}] --> k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]
3、字典
{A1: B1, A2: B2, A3: B3, A4: B4} -- > k_lst[ A[i1, i2...] ], v_lst[ B[i1, i2...] ]

o_data = [(A, 34), (B, 45), (C, 12)]
x, y = Base.cast(o_data)
print(x) # [‘A‘, ‘B‘, ‘C‘]
print(y) # [‘34‘, ‘45‘, ‘12‘]
Base.cast 函數

項目地址: https://github.com/kinegratii/borax

安裝

borax 要求 Python3.5 以上,可以使用以下命令安裝這個庫。

$ pip install borax

函數定義文檔

該模塊使用 fetch 函數,簽名如下:

fetch(iterable, key, *keys, default=EMPTY, defaults=None, getter=None)

各參數的意義如下:

  • iterable:數據列表
  • key / keys:鍵值、屬性訪問方式的索引
  • default:默認值,用於選擇單個屬性
  • defaults:默認值字典,用於選擇多個屬性
  • getter:自定義訪問回調函數

應當註意的是,在使用時, defaultdefaultsgetter 參數必須使用關鍵字方式傳遞,詳情參考 PEP 3102。

示例

選取多個屬性

技術分享圖片
from borax.fetch import fetch

objects = [
    {id: 282, name: Alice, age: 30},
    {id: 217, name: Bob, age: 56},
    {id: 328, name: Charlie, age: 56},
]

names, ages = fetch(objects, name, age)
print(names)
print(ages)

#輸出
#[‘Alice‘, ‘Bob‘, ‘Charlie‘]
#[30, 56, 56]
borax.fetch 模塊

networkx 庫

項目地址: https://github.com/networkx/networkx

對於復雜的關系圖,可以使用 networkx 庫構建節點和連線,並傳遞給 add 函數。如下面的例子。

技術分享圖片
# coding=utf8

from __future__ import unicode_literals

import networkx as nx
from networkx.readwrite import json_graph
from pyecharts import Graph

g = nx.Graph()
categories = [網關, 節點]
g.add_node(FF12C904, name=Gateway 1, symbolSize=40, category=0)
g.add_node(FF12CA02, name=Node 11, category=1)
g.add_node(FF12C326, name=Node 12, category=1)
g.add_node(FF45C023, name=Node 111, category=1)
g.add_node(FF230933, name=Node 1111, category=1)

g.add_edge(FF12C904, FF12CA02)
g.add_edge(FF12C904, FF12C326)
g.add_edge(FF12CA02, FF45C023)
g.add_edge(FF45C023, FF230933)

g_data = json_graph.node_link_data(g)
eg = Graph(設備最新拓撲圖)
eg.add(Devices, nodes=g_data[nodes], links=g_data[links], categories=categories)
# eg.show_config()
eg.render()
networkx 庫

技術分享圖片

Pandas&Numpy 簡單示例

如果使用的是 Numpy 或者 Pandas,可以參考這個示例

技術分享圖片

Note: 使用 Pandas&Numpy 時,整數類型請確保為 int,而不是 numpy.int32

當然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 來展示圖表,matplotlib 有的,pyecharts 也會有的

Note: 從 v0.1.9.2 版本開始,廢棄 render_notebook() 方法,現已采用更加 pythonic 的做法。直接調用本身實例就可以了。

比如這樣

技術分享圖片

還有這樣

技術分享圖片

如果使用的是自定義類,直接調用自定義類示例即可

技術分享圖片

更多 Jupyter notebook 的例子請參考 notebook-use-cases。可下載後運行看看。

如需使用 Jupyter Notebook 來展示圖表,只需要調用自身實例即可,同時兼容 Python2 和 Python3 的 Jupyter Notebook 環境。所有圖表均可正常顯示,與瀏覽器一致的交互體驗,這下展示報告連 PPT 都省了!!

【數據可視化-pyecharts】pyecharts快速入門