########優秀事例######python調用echart交互式可視化

pyecharts 是一個用於生成 Echarts 圖表的類庫。Echarts 是百度開源的一個數據可視化 JS 庫。用 Echarts 生成的圖可視化效果非常棒,爲了與 Python 進行對接,方便在 Python 中直接使用數據生成圖,我寫了這個項目。以下是最新版echart的靚圖。當然,pyecharts貌似沒有這麼齊全。 
這裏寫圖片描述

安裝:

pip install pyecharts
  •  

還有很多已經打包好的中國地圖、世界地圖包:

$ pip install echarts-countries-pypkg
$ pip install echarts-china-provinces-pypkg
$ pip install echarts-china-cities-pypkg
$ pip install echarts-china-counties-pypkg
$ pip install echarts-china-misc-pypkg
$ pip install echarts-united-kingdom-pypkg

目 錄

 

 


一、簡單示例

from pyecharts import Bar

attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
bar = Bar("Bar chart", "precipitation and evaporation one year")
bar.add("precipitation", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("evaporation", attr, v2, mark_line=["average"], mark_point=["max", "min"])
bar.render()
#bar

這裏寫圖片描述

其中,bar.render(),是以html形式保存在本地文件中; 
bar,是在當前環境下,輸出圖表。 
輸出方式還有PDF:

bar.render(path="render.png")
  •  

同時也可以使用flask/Django進行封裝, 
這裏寫圖片描述


二、筆者關注的幾個圖表

2.1 畫出花樣的散點圖

from pyecharts import EffectScatter
es = EffectScatter("動態散點圖各種圖形示例")
es.add("", [10], [10], symbol_size=20, effect_scale=3.5,
       effect_period=3, symbol="pin")
es.add("", [20], [20], symbol_size=12, effect_scale=4.5,
       effect_period=4,symbol="rect")
es.add("", [30], [30], symbol_size=30, effect_scale=5.5,
       effect_period=5,symbol="roundRect")
es.add("", [40], [40], symbol_size=10, effect_scale=6.5,
       effect_brushtype='fill',symbol="diamond")
es.add("", [50], [50], symbol_size=16, effect_scale=5.5,
       effect_period=3,symbol="arrow")
es.add("", [60], [60], symbol_size=6, effect_scale=2.5,
       effect_period=3,symbol="triangle")
es

這裏寫圖片描述

2.2 關係圖 + NetworkX

from pyecharts import Graph

nodes = [{"name": "結點1", "symbolSize": 10},
         {"name": "結點2", "symbolSize": 20},
         {"name": "結點3", "symbolSize": 30},
         {"name": "結點4", "symbolSize": 40},
         {"name": "結點5", "symbolSize": 50},
         {"name": "結點6", "symbolSize": 40},
         {"name": "結點7", "symbolSize": 30},
         {"name": "結點8", "symbolSize": 20}]
links = []
for i in nodes:
    for j in nodes:
        links.append({"source": i.get('name'), "target": j.get('name')})
graph = Graph("關係圖-力引導佈局示例")
graph.add("", nodes, links, is_label_show=True,
          graph_repulsion=8000, graph_layout='circular',
          label_text_color=None)
graph

這裏寫圖片描述

其中,pyecharts處理不了太複雜的關係圖,可以借用: networkx 庫(可參考筆者的博文:關係圖︱python 關係網絡的可視化NetworkX(與Apple.Turicreate深度契合)

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

這裏寫圖片描述

2.3 WordCloud(詞雲圖)

from pyecharts import WordCloud

name = [
    'Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications',
    'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp',
    'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham',
    'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value = [
    10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112,
    965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud

支持中文。 
這裏寫圖片描述

2.4 TreeMap(矩形樹圖)

矩形樹圖是一種常見的表達『層級數據』『樹狀數據』的可視化形式。它主要用面積的方式,便於突出展現出『樹』的各層級中重要的節點。

from pyecharts import TreeMap

treemap = TreeMap("矩形樹圖示例", width=1200, height=600)
import os
import json
with open(os.path.join("..", "json", "treemap.json"), "r", encoding="utf-8") as f:
        data = json.load(f)
treemap.add("演示數據", data, is_label_show=True, label_pos='inside')
treemap.render()

這裏寫圖片描述


3 相關組件

3.1 Grid:並行顯示多張圖

這裏寫圖片描述

3.2 Overlap:結合不同類型圖表疊加畫在同張圖上

這裏寫圖片描述

3.3 Page:同一網頁按順序展示多圖

這裏寫圖片描述

3.4 Timeline:提供時間線輪播多張圖

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章