天天看點

Python資料可視化庫pyecharts

針對資料分析團隊需求,簡單整理了一些相關内容分享同步大家學習,旨在幫助機器學習人員、資料分析人員、NLP算法人員快速了解業務資料,針對性解決工程中面臨的問題。

@[TOC]

pyecharts 介紹和安裝

ECharts,一個使用 JavaScript 實作的開源可視化庫,可以流暢的運作在 PC 和移動裝置上,相容目前絕大部分浏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的矢量圖形庫 ZRender,提供直覺,互動豐富,可高度個性化定制的資料可視化圖表。

  1. Echarts 百度開源可視化工具

​​

http://echarts.baidu.com

​​

  1. pyecharts: 國内大神實作Python 調用echarts 庫

特性

  • 簡潔的 API 設計,使用如絲滑般流暢,支援鍊式調用
  • 囊括了 30+ 種常見圖表,應有盡有
  • 支援主流 Notebook 環境,Jupyter Notebook 和 JupyterLab
  • 可輕松內建至 Flask,Django 等主流 Web 架構
  • 高度靈活的配置項,可輕松搭配出精美的圖表
  • 詳細的文檔和示例,幫助開發者更快的上手項目
  • 多達 400+ 地圖檔案以及原生的百度地圖,為地理資料可視化提供強有力的支援

pyecharts 安裝

安裝庫 pip3 install pyecharts

如果需要繪制地理圖相關内容,需要一并安裝如下内容:

安裝地圖檔案

全球國家地圖: echarts-countries-pypkg

中國省級地圖: echarts-china-provinces-pypkg

中國市級地圖: echarts-china-cities-pypkg

全部直接使用python的pip安裝,安裝好之後,就可以使用了

pip3 install pyecharts

pip3 install echarts-countries-pypkg

pip3 install echarts-china-provinces-pypkg

pip3 install echarts-china-cities-pypkg

使用版本說明:

  1. Python 版本: 3.7.x
  2. pyecharts: 1.x

版本檢查

import pyecharts      
pyecharts.__version__      

'1.2.1'

pyecharts 折線圖

繪制一個簡單的折線圖

# 導入庫
import pyecharts.options as opts
from pyecharts.charts import Line      
# 繪制散點圖資料
x = ['seaborn','matplotlib','plotly','pyecharts','python']
y1 = [440,550,770,450,800]
y2 = [570,1340,1370,1111,2222]      
# 定義Line Charts 的函數
def line_charts()->Line:
    c = Line()
    c.add_xaxis(xaxis_data=x)
    c.add_yaxis(series_name='',y_axis=y1)
    c.add_yaxis(series_name='',y_axis=y2)
    return c

# 繪制圖表
c = line_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

Line 增加标題與圖例

# 導入庫
import pyecharts.options as opts
from pyecharts.charts import Line
# 繪制散點圖資料
x = ['seaborn','matplotlib','plotly','pyecharts','python']
y1 = [440,550,770,450,800]
y2 = [570,1340,1370,1111,2222]
# 定義Line Charts 的函數
def line_charts()->Line:
    c = Line()
    c.add_xaxis(xaxis_data=x)
    c.add_yaxis(series_name='A',y_axis=y1)
    c.add_yaxis(series_name='B',y_axis=y2)
    
    # 資料項設定
    c.set_global_opts(
        title_opts=opts.TitleOpts(title='數量統計'),
        legend_opts=opts.LegendOpts(is_show=True)# is_show = True 預設-展示圖例
    )
    return c

# 繪制圖表
c = line_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

Line 增加提示項

pyecharts 中提供累TooltipOpts

trigger 觸發類型。可選:

item: 資料項圖形觸發,主要用于散點圖,餅圖

axis:坐标軸觸發,主要用在狀圖,折線圖

none: 什麼都不做

# 導入庫
import pyecharts.options as opts
from pyecharts.charts import Line
# 繪制散點圖資料
x = ['seaborn','matplotlib','plotly','pyecharts','python']
y1 = [440,550,770,450,800]
y2 = [570,1340,1370,1111,2222]
# 定義Line Charts 的函數
def line_charts()->Line:
    c = Line()
    c.add_xaxis(xaxis_data=x)
    c.add_yaxis(series_name='A',y_axis=y1)
    c.add_yaxis(series_name='B',y_axis=y2)
    
    # 資料項設定 ,全局設定一次
    c.set_global_opts(
        title_opts=opts.TitleOpts(title='數量統計'),
        legend_opts=opts.LegendOpts(is_show=True),# is_show = True 預設-展示圖例
        tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross')
    )
    
    #c.set_global_opts(tooltip_opts=opts.TooltipOpts(trigger='axis',axis_pointer_type='cross'))
    return c

# 繪制圖表
c = line_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

pyecharts Bar 柱狀圖

pyecharts 全局參數設定

jupyter notebook 和 pycharm 基本圖表繪制

如何繪制一個簡單Bar 圖

坐标軸文本傾斜設定

設定圖表大小

封裝一些繪制圖表的函數

設定多組的柱狀圖

設定圖例

區域縮放的配置項

設定多組柱狀圖

from pyecharts import  options as opts
from pyecharts.charts import Bar


def bar_charts()->Bar():

    '''
    定義一個傳回pyecharts Bar 的函數

    :return:
    '''
    x = ['seaborn', 'plotly', 'pyecharts']
    y1 = [1140, 559, 270]
    y2 = [570,1340,1370] 

    c = Bar(init_opts=opts.InitOpts(width='1000px',height='600px'))
    c.add_xaxis(xaxis_data=x)
    c.add_yaxis(series_name='',yaxis_data=y1)
    c.add_yaxis(series_name='',yaxis_data=y2)

    c.reversal_axis()

    c.set_global_opts(

        title_opts=opts.TitleOpts(title=''),
        yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=60))
    )
    return c
c = bar_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

折線圖 + 柱狀圖 組合

柱狀圖: y 軸顯示 名額1

折線圖: y 軸顯示 名額2

from pyecharts import options as opts
from pyecharts.charts import Bar,Line

x = ['Python','Seaborn','Plotly','pyecharts']
# 繪制柱狀圖方法
def bar_charts()->Bar():
    
    y1 = [1140, 559, 270,1200]
    y2 = [570,1340,1370,900]
    bar = Bar(init_opts=opts.InitOpts(width='1000px',height='600px'))
    bar.add_xaxis(xaxis_data=x)
    bar.add_yaxis(series_name='A',yaxis_data=y1,label_opts=opts.LabelOpts(is_show=False))
    bar.add_yaxis(series_name='B',yaxis_data=y2,label_opts=opts.LabelOpts(is_show=False))

    bar.set_global_opts(title_opts=opts.TitleOpts(title='統計'))
    
    # bar 擴充
    bar.extend_axis(
        yaxis=opts.AxisOpts(
            name='價格',
            type_='value',
            min_=0,
            max_=200,
            interval=10,
            axislabel_opts=opts.LabelOpts(formatter='{value} 元')) # value
    )
    return bar


# 繪制Line 方法
def line_charts()->Line():
    y = [159,29,49,79]
    c = Line()
    c.add_xaxis(xaxis_data=x)
    c.add_yaxis(series_name='價格',yaxis_index=1,y_axis= y,label_opts=opts.LabelOpts(is_show=False))
    return c


# Bar + Line 
bar = bar_charts()
line = line_charts()

bar.overlap(line).render_notebook()      
Python資料可視化庫pyecharts

pyecharts Pie 餅圖

pyecharts 第一個Pie 餅圖

Pie 需要的資料格式:

[[x1,y1],[x2,y2]]

繪制餅圖的操作步驟:

  • 建構Pie 的資料
  • 為Pie 示例對象添加資料
  • 設定标題
  • 設定每一項占比

我們分析一些我的一些課程不同的來源銷售的占比

from pyecharts.charts import  Pie
from pyecharts import  options as opts      
# 建構Pie的資料
x_data = ['直接通路','營銷推廣','部落格推廣','搜尋引擎']
y_data = [830,214,300,1100]

# Pie 設定指定的格式
data_pair = [list(z) for z in  list(zip(x_data,y_data))]
print(data_pair)      

[['直接通路', 830], ['營銷推廣', 214], ['部落格推廣', 300], ['搜尋引擎', 1100]]

def pie_charts()->Pie:
    c = Pie(init_opts=opts.InitOpts(width='500px',height='500px'))
    c.add(series_name='通路來源',data_pair=data_pair)

    # 設定全局項
    c.set_global_opts(title_opts=opts.TitleOpts(title='不同的來源的銷售分析',pos_left='center',pos_top=20))

    # 設定每項資料占比
    c.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter="{a} <br/> {b}:{c} ({d}%)"))
    return c


c  = pie_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

pyechart 圓弧狀Pie

from pyecharts.charts import  Pie
from pyecharts import  options as opts

# 建構Pie的資料
x_data = ['直接通路','營銷推廣','部落格推廣','搜尋引擎']
y_data = [830,214,300,1100]

# Pie 設定指定的格式
data_pair = [list(z) for z in  list(zip(x_data,y_data))]
print(data_pair)      

[['直接通路', 830], ['營銷推廣', 214], ['部落格推廣', 300], ['搜尋引擎', 1100]]

def pie_radius_charts()->Pie:
    c = Pie()
    c.add(series_name='通路來源',data_pair=data_pair,radius=['40%','75%'])
    
    c.set_global_opts(
        title_opts=opts.TitleOpts(title='不同銷售來源'),
        legend_opts=opts.LegendOpts(orient='vertical',pos_top='15%',pos_left='2%')
    )
    
    # 設定每項資料占比
    c.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter="{a} <br/> {b}:{c} ({d}%)"))
    return c 


c = pie_radius_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

pyecharts scatter 散點圖

figsize = opts.InitOpts(width='800px',height='300px')
scatter = Scatter(init_opts=figsize)
scatter.add_xaxis(xaxis_data=x_data)

scatter.add_yaxis(
    series_name='y = sin(x) 函數散點圖', # 圖例名稱
    y_axis = y1,#資料
    label_opts=opts.LabelOpts(is_show=False))# 設定 資料點是否展示

scatter.add_yaxis(
    series_name='y = cos(x) 函數散點圖',
    y_axis = y2,
    label_opts=opts.LabelOpts(is_show=False)
)

scatter.set_global_opts(title_opts=opts.TitleOpts(title='第一個散點圖',pos_top='20px',pos_left='center'))
scatter.render_notebook()      
Python資料可視化庫pyecharts

pyecharts WordCloud 詞雲

import pyecharts.options as opts
from pyecharts.charts import WordCloud
data = [
    ('甯澤濤女友',4583345),
    ('日學者發現侵華日軍使用毒氣鐵證',2324539),
    ('倫敦眼驚現摩斯密碼',2296099),
    ('網友請願追責叢林法則節目組',1376545),
    ('寒門女孩清華畢業典禮上發言',1337607)
]
c = WordCloud()
c.add(series_name='',data_pair=data)
c.set_global_opts(title_opts=opts.TitleOpts(title='熱詞分析'))
c.render_notebook()      
Python資料可視化庫pyecharts

pyecharts geo 地理圖

如果需要繪制地理圖相關内容,需要一并安裝如下内容:

安裝地圖檔案

全球國家地圖: echarts-countries-pypkg

中國省級地圖: echarts-china-provinces-pypkg

中國市級地圖: echarts-china-cities-pypkg

全部直接使用python的pip安裝,安裝好之後,就可以使用了

pip3 install pyecharts

pip3 install echarts-countries-pypkg

pip3 install echarts-china-provinces-pypkg

pip3 install echarts-china-cities-pypkg

本課程使用版本說明:

Python 版本: 3.7.x

pyecharts: 1.x

導入庫

from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType

import pyecharts

import warnings
warnings.filterwarnings('ignore')

print('pyecharts version=',pyecharts.__version__)      

pyecharts version= 1.2.1

繪制地理圖表

def geo_charts()->Geo:
    
    data = [['廣東',104320459],['山東',95792719],['河南',94029939]]

    print(data)
    c = Geo()
    c.add_schema(maptype='china',is_roam=False,label_opts=opts.LabelOpts(is_show=True))
    c.add('geo',data,type_=ChartType.EFFECT_SCATTER,symbol_size=12,symbol='pin')
    c.set_global_opts(title_opts=opts.TitleOpts(title='geo-案例'),legend_opts=opts.LegendOpts(is_show=True))
    c.render_notebook()
    return c


c = geo_charts()
c.render_notebook()      
Python資料可視化庫pyecharts

業務案例分析

  • 一般業務方提供資料,多數是csv和txt等文本資料。
  • 如果資料量,多數存儲hadoop 的hdfs(分布式檔案系統)
  • 可以采用spark或者mapreduce 進行基礎資料分析統計
  • 基礎名額擷取後,可以使用python 的一些可視化工具庫進行展示

徹底掌握對業務的資料分析,你需要掌握的工具:hadoop,spark ,python,numpy ,pandas ,seaborn ,pyecharts ,matplotlib 。具體更多内容,大家可以互相交流。

Python資料可視化庫pyecharts

視訊請參考: