免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
基于Pyecharts v1.x 的數(shù)據(jù)可視化
作者 | CDA數(shù)據(jù)分析師

1、Pyecharts 簡介

Echarts是一個由百度開源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計,得到了眾多開發(fā)者的認可。而 Python 是一門富有表達力的語言,很適合用于數(shù)據(jù)處理。當數(shù)據(jù)分析遇上數(shù)據(jù)可視化時,Pyecharts誕生了。

Pyecharts最早只適用于工程領(lǐng)域的可視化開發(fā),但是隨著其對Jupyter notebook、Jupyter lab等交互式開發(fā)工具的支持不斷加強,現(xiàn)在也開始被許多數(shù)據(jù)分析師應(yīng)用到數(shù)據(jù)探索中。

1.1 Pyecharts各個版本與Python的對應(yīng)關(guān)系

pyecharts 分為 v0.5.x 和 v1.x 兩個大版本,v0.5.x 和 v1.x 間不兼容,v1.x 是一個全新的版本。

Pyecharts各版本與python的對應(yīng)關(guān)系見下表

注:經(jīng)Pyecharts開發(fā)團隊決定,0.5.x 版本將不再進行維護

1.2 Pyecharts v1系列的新特性

  • 全面擁抱 Python3 和 TypeHint

pyecharts v1.0.0 停止對 Python2.7,3.4~3.5 版本的支持和維護,僅支持 Python3.6+。如果還不知道什么是 TypeHint 的同學(xué),勸你盡早入坑,官方入坑指南 typing — Support for type hints。

在編程界,早已流傳著 動態(tài)一時爽,重構(gòu)火葬場 這樣的真知灼見,動態(tài)語言類型檢查已經(jīng)成為了一種趨勢,Javascript 已經(jīng)有了 Typescript,Python 也在力推 TypeHint,雖然 Python 的 TypeHint 實際上對于程序的運行并沒有任何影響......,但它配合 IDE 和 mypy,或者 pyright 這樣的工具可以在開發(fā)階段趁早發(fā)現(xiàn)問題。

  • 棄用插件機制

pyecharts v1.0.0 廢除原有的插件機制,包括地圖包插件主題插件,插件的本質(zhì)是提供 pyecharts 運行所需要的靜態(tài)資源文件(基本都是 .js 文件),所以現(xiàn)在開放了兩種模式提供靜態(tài)資源文件。

online 模式,使用 pyecharts 官方提供的 assets host,或者部署自己的 remote host。

local 模式,使用自己本地開啟的文件服務(wù)提供 assets host(離線模式)。

  • 支持 JupyterLab

對 JupyterLab 的支持一直是很多開發(fā)者關(guān)心的功能,畢竟 JupyterLab 號稱是下一代的 Notebook。pyecharts 1.0.0 開始支持在 JupyterLab 中渲染圖表啦!

#使用JupytrLab需添加如下代碼
from pyecharts.globals import CurrentConfig,NotebookType
CurrentConfig,NOTEBOOK_TYPE=NotebookType.JUPYTER_LAB
#除了以上代碼,還需在渲染之前執(zhí)行加載JavaScript腳本的代碼,這里以柱狀圖對象bar為例
bar.load_javascript()
#然后再渲染即可
bar.render_notebook()

  • 代碼風格重構(gòu)

所有配置項均 OOP,在新版本的 pyecharts 中,一切皆 Options。配置項種類更多,可操作性更強,可以畫出更豐富的圖表,pyecharts 官方畫廊 pyecharts/pyecharts-gallery。

0.5.X 版本寫法

from pyecharts import Bar

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
bar = Bar("柱狀圖數(shù)據(jù)堆疊示例")
bar.add("商家A", attr, v1, is_stack=True)
bar.add("商家B", attr, v2, is_stack=True)
bar.render()

1.0.0 版本寫法,支持鏈式調(diào)用

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

attr = ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]


bar = (
Bar()
.add_xaxis(attr)
.add_yaxis("商家A", v1, stack="stack1")
.add_yaxis("商家B", v2, stack="stack1")
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="柱狀圖數(shù)據(jù)堆疊示例"))
)

bar.render()

  • 支持 selenium/phantomjs 渲染圖片

pyecharts 1.0.0 提供兩種模式渲染圖片,selenium 和 phantomjs,分別需要安裝 snapshot-selenium 和 snapshot-phantomjs。

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


def bar_chart() -> Bar:
c = (
Bar()
.add_xaxis(["襯衫", "毛衣", "領(lǐng)帶", "褲子", "風衣", "高跟鞋", "襪子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-測試渲染圖片"))
)
return c


def render_chart_by_selenium():
from snapshot_selenium import snapshot
make_snapshot(snapshot, bar_chart().render(), "bar0.png")


def render_chart_by_phantomjs():
from snapshot_phantomjs import snapshot
make_snapshot(snapshot, bar_chart().render(), "bar1.png")

看到新版的種種優(yōu)勢,小伙伴們是不是躍躍欲試了?接下來我們安裝并通過一系列代碼體驗Pyecharts。

1.3 安裝 Pyecharts

v1系列版本的Pyecharts僅支持python3.6+ ,即如果你的python是3.6+,則默認會下載最新版的pyecharts。

pip install -i https://pypi.douban.com/simple pyecharts -U #使用國內(nèi)軟件源下載速度會快很多

安裝pyecharts v0.5系列版本:

pip install -i https://pypi.douban.com/simple pyecharts==0.5.11

2、Pyecharts繪圖

繪圖前需要導(dǎo)入相關(guān)模塊,根據(jù)繪制的圖形不同,導(dǎo)入的模塊會有些許差異

from pyecharts import options as opts #引入配置項入口
from pyecharts.charts import Bar,Line #導(dǎo)入相關(guān)圖形的構(gòu)造方法

2.1 pyecharts繪圖步驟

pyecharts繪圖大致是按以下五個步驟來的

這里以繪制柱形圖為例

#1、構(gòu)造柱形圖對象
bar = Bar()
#2、添加x軸數(shù)據(jù)
bar.add_xaxis(xaxis_data=x_data)
# 添加y軸數(shù)據(jù)
bar.add_yaxis( "系列名稱", #設(shè)置系列名稱
yaxis_data=y_data, #設(shè)置y軸系列數(shù)據(jù)
...... #更多參數(shù)可以查看官網(wǎng)
)
#3、對系列進行配置
bar.set_series_opts( #主要是對圖元、文字、
...... #標簽、線型、標記點、標記線 等內(nèi)容進行配置 
)
#4、對全局進行配置
bar.set_global_opts( #可配置內(nèi)容包括:x、y坐標軸;初始化配置;
...... #工具箱配置;標題;區(qū)域縮放;圖例;
#提示框等參數(shù)配置

#5、渲染圖片
bar.render(path) #將圖片渲染為html文件
bar.render_notebook() #直接在jupytr notebook中渲染

基于分類/時間的數(shù)據(jù)對比,通常需用到比較型圖表。用戶通過圖表輕松識別最大/最小值,查看當前和過去的數(shù)據(jù)變動情況。

常見場景:哪個地區(qū)的收件量最多?今年的收入和去年相比如何?商品的銷量在不同地區(qū)、時間維度上的差異……

2.2 柱狀圖的繪制

當數(shù)據(jù)量少的時候我們使用柱狀圖就可以了。pyecharts繪制柱狀圖表灰常簡單咯,啥也不說了,上代碼。

from example.commons import Faker #調(diào)用官方提供的測試數(shù)據(jù)
from pyecharts import options as opts #配置入口模塊
from pyecharts.charts import Bar #柱狀圖構(gòu)造方法

bar = Bar()#構(gòu)造bar對象
bar.add_xaxis(Faker.choose()) #添加x軸數(shù)據(jù) 
bar.add_yaxis("商家A", Faker.values()) #添加一個系列數(shù)據(jù),這里是A商家的數(shù)據(jù)
bar.add_yaxis("商家B", Faker.values()) #添加另一個系列數(shù)據(jù)
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-基本示例", #設(shè)置主標題
subtitle="我是副標題" #設(shè)置副標題
))
bar.render_notebook() #在jupyter notebook中渲染

效果圖如下:

2.3 條形圖

當條目較多,如大于12條,移動端上的柱狀圖會顯得擁擠不堪,更適合用條形圖。一般數(shù)據(jù)條目不超過30條,否則易帶來視覺和記憶負擔。

bar = Bar().add_xaxis(Faker.choose()+Faker.choose()+Faker.choose()) #將數(shù)據(jù)生成三份 
bar.add_yaxis("", Faker.values()+Faker.values()+Faker.values()) #數(shù)據(jù)生成三份
bar.set_global_opts(title_opts=opts.TitleOpts(title="條形圖"))
bar.reversal_axis() #翻轉(zhuǎn)XY軸,將柱狀圖轉(zhuǎn)換為條形圖
bar.render_notebook()

2.4 折線圖

當數(shù)據(jù)X軸為連續(xù)數(shù)值(如時間)且我們比較注重觀察數(shù)據(jù)變化趨勢時,折線圖是非常好的選擇。

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

line=Line()
line.add_xaxis(["201{}年/{}季度".format(y,z) 
for y in range(4) 
for z in range(1,5)]) #設(shè)置x軸數(shù)據(jù)
line.add_yaxis(
"電視機銷量", 
[4.80,4.10,6.00,6.50,5.80,5.20,6.80,7.40,
6.00,5.60,7.50,7.80,6.30,5.90,8.00,8.40]
)#設(shè)置y軸數(shù)據(jù)
line.set_global_opts(
xaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(rotate=-40),
),#設(shè)置x軸標簽旋轉(zhuǎn)角度
yaxis_opts=opts.AxisOpts(name="銷量(單位/千臺)"),#設(shè)置y軸名稱
title_opts=opts.TitleOpts(title="折線圖")) #設(shè)置圖表標題

line.render_notebook() #渲染圖表

2.5 南丁格爾-玫瑰圖

當對比差異不是很明顯的數(shù)據(jù)時,可以使用南丁格爾玫瑰圖,其原理為:扇形的半徑和面積是平方的關(guān)系,南丁格爾玫瑰圖會將數(shù)值之間的差異放大,適合對比大小相近的數(shù)值。它不適合對比差異較大的數(shù)值。

此外,因為圓有周期性,玫瑰圖也適于表示周期/時間概念,比如星期、月份。依然建議數(shù)據(jù)量不超過30條,超出可考慮條形圖。

def pie_rosetype():
from pyecharts.charts import Pie
c = (
Pie()
.add(
"",
[list(z) for z in zip(["201{}年/{}季度".format(y,z)
for y in range(2) 
for z in range(1,3)], [4.80,4.10,5.80,5.20])],
radius=["0%", "75%"], #設(shè)置內(nèi)徑外徑
rosetype="radius", #玫瑰圖有兩種類型
label_opts=opts.LabelOpts(is_show=True),
)
.set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰圖示例"))
)
return c
pie_rosetype().render_notebook()

2.6 雷達圖

對于一些多維的性能數(shù)據(jù),如王者榮耀等游戲中的玩家戰(zhàn)力信息,常用雷達圖表示。指標得分接近圓心,說明處于較差狀態(tài),應(yīng)分析改進;指標得分接近外邊線,說明處于理想狀態(tài)。

from pyecharts import options as opts
from pyecharts.charts import Page, Radar

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

def radar_base() -> Radar:
c = (
Radar()
.add_schema(
schema=[
opts.RadarIndicatorItem(name="KDA", max_=6500),
opts.RadarIndicatorItem(name="輸出", max_=16000),
opts.RadarIndicatorItem(name="經(jīng)濟", max_=30000),
opts.RadarIndicatorItem(name="生存", max_=38000),
opts.RadarIndicatorItem(name="推進", max_=52000),
opts.RadarIndicatorItem(name="打野", max_=25000),
]
)
.add("魯班", v1, #添加系列名稱及數(shù)據(jù)
color="red", #設(shè)置邊框線的顏色
areastyle_opts = opts.AreaStyleOpts(#設(shè)置填充的屬性
opacity = 0.5, #透明度
color="red" #填充顏色
),)
.add("后裔", v2,color="blue",
areastyle_opts = opts.AreaStyleOpts(
opacity = 0.5,#透明度
color="blue"
),)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(title_opts=opts.TitleOpts(title="英雄成長對比"))
)
return c
radar_base().render_notebook()

2.7 餅圖

部分相較于整體,一個整體被分成幾個部分。這類情況會用到構(gòu)成型圖表,如五大產(chǎn)品的收件量占比、公司利潤的來源構(gòu)成等。

對于參與構(gòu)成研究的數(shù)據(jù)不超過9個時,可以使用餅圖來繪制,如果超過了建議使用條形圖來展示。

def pie_base():
from pyecharts import options as opts
from pyecharts.charts import Page, Pie
v1=["啤酒","可樂","雪碧","咖啡","奶茶"]
v2=[30,19,21,12,18]

c = (
Pie()
.add("", [list(z) for z in zip(v1,v2)])
.set_global_opts(title_opts=opts.TitleOpts(title="銷售收入占比"))
.set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}%"))#格式化標簽輸出內(nèi)容
)
return c
pie_base().render_notebook()

2.8 pyecharts繪制散點圖

通過分布&聯(lián)系型圖表能看到數(shù)據(jù)的分布情況,進而找到某些聯(lián)系,如相關(guān)性、異常值和數(shù)據(jù)集群。

常見使用場景:客戶的分布與哪些因素相關(guān)、身高與體重的相關(guān)性分析等

查看兩個變量的關(guān)系使用散點圖,以貸款業(yè)務(wù)為例,查看年齡與信用的關(guān)系

代碼:

def scatter_render():
from pyecharts.charts import Scatter
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
import pandas as pd
df = pd.DataFrame({"年齡":[32,28,23,24,21],
"信用分":[771,751,738,726,725],
"姓名":['小明','小花','小麗','小剛','小紅']})
df.sort_values("年齡",inplace=True,ascending=True)# 按年齡對數(shù)據(jù)做升序排序
c = (
Scatter()
.add_xaxis(df.年齡.values.tolist())
.add_yaxis(
"信用分",
df[["信用分","姓名"]].values.tolist(),#傳入信用分與姓名組合,方便js回調(diào)函數(shù)顯示標簽
label_opts=opts.LabelOpts(
formatter=JsCode(
"function(params){return params.value[2];}" #通過定義JavaScript回調(diào)函數(shù)自定義標簽
)
)
)
.set_global_opts(
title_opts=opts.TitleOpts(title="Scatter-多維度數(shù)據(jù)"),
xaxis_opts = opts.AxisOpts(
type_="value",#x軸數(shù)據(jù)類型是連續(xù)型的
min_=20 #x軸范圍最小為20
),
yaxis_opts = opts.AxisOpts(
min_=700 #y軸范圍最小為700
)
)
)

return c

scatter_render().render_notebook()

我們可以看出,信用分與年齡在圖形所顯示范圍內(nèi)大致是成正比的。

2.9 繪制組合圖

組合圖就是將兩種不同的圖形繪制到同一圖表中,我們以數(shù)據(jù)分析中常常用到的帕累托圖為例,展示pyecharts如何繪制組合圖。

帕累托法則又稱為二八法則,即百分之八十的問題是百分之二十的原因造成的。

帕累托圖(Pareto chart)又叫排列圖、主次圖,是按照發(fā)生頻率大小順序繪制的直方圖,表示有多少結(jié)果是由已確認類型或范疇的原因所造成。

帕累托圖在項目管理中主要用來找出產(chǎn)生大多數(shù)問題的關(guān)鍵原因來解決大多數(shù)問題,是將出現(xiàn)的質(zhì)量問題按照重要程度依次排列的一種圖表,從而可以直觀地得出影響質(zhì)量問題的主要因素。

主要特點:

1、柱形圖的數(shù)據(jù)按數(shù)值的降序排列,折線圖上的數(shù)據(jù)有累積百分比數(shù)據(jù),并在次坐標軸顯示;

2、折線圖的起點數(shù)值為0%,并且位于柱形圖第一個柱子的最左下角;

3、折線圖的第二個點位于柱形圖第一個柱子的最右上角 ;

4、折線圖最后一個點數(shù)值為100%,位于整張圖形的最右上角

數(shù)據(jù):

代碼:

def bar_overlap_line():
from pyecharts import options as opts #引入配置項
from pyecharts.charts import Bar,Line


x_data1 = ["產(chǎn)品價格優(yōu)勢不突出","渠道經(jīng)理服務(wù)不到位",
"營銷活動頻次不夠","區(qū)域消費市場不景氣","其他"]
x_data2 = [*range(6)]
y_data1 = [115,99,59,33,23]
y_data2 = [0,35,65,83,93,100] 

#######################################################################
bar = Bar()
#添加x軸數(shù)據(jù)
bar.add_xaxis(xaxis_data=x_data1)
bar.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category")) #設(shè)置x軸系列 
bar.add_yaxis( "問題數(shù)量(頻數(shù))", #設(shè)置y軸系列名稱
yaxis_data=y_data1, #設(shè)置y軸系列數(shù)據(jù)
category_gap=0, #設(shè)置柱的間距
color="blue", #設(shè)置柱形的填充顏色
)

bar.extend_axis(
xaxis=opts.AxisOpts( #設(shè)置x軸的參數(shù)
is_show=False,
position="top",



bar.extend_axis(
yaxis=opts.AxisOpts(

axistick_opts=opts.AxisTickOpts( #刻度
is_inside=True,
),
axislabel_opts=opts.LabelOpts(formatter="{value}%", #格式化刻度輸出
position="right")
)

bar.set_global_opts(
xaxis_opts=opts.AxisOpts( #設(shè)置x軸的參數(shù)
is_show=True, #是否顯示坐標軸
),
yaxis_opts=opts.AxisOpts( #設(shè)置y軸最大取值范圍
max_=320,
),
title_opts=opts.TitleOpts(title="帕累托圖")

########################################################################## 
line =Line()
#添加x軸數(shù)據(jù)
line.add_xaxis(x_data2)
#添加y軸數(shù)據(jù) 
line.add_yaxis("累計百分比",
y_data2,
xaxis_index=1, #使用次x坐標軸
yaxis_index=1, #使用次y坐標軸
label_opts=opts.LabelOpts(is_show=False),
is_smooth=True,


bar.overlap(line) #組合柱狀圖與折線圖
return bar
bar_overlap_line().render_notebook()

最終效果圖如下所示:

以上就是數(shù)據(jù)分析常用可視化圖表的pyecharts實現(xiàn)方法。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
推薦一款python數(shù)據(jù)可視化神器
bar庫 pyecharts
Python Flask 數(shù)據(jù)可視化
pyecharts基礎(chǔ)之柱狀圖的繪制
國人開發(fā)的數(shù)據(jù)可視化神庫 pyecharts
Pyecharts繪圖API總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服