【python可視化系列】python數(shù)據(jù)可視化利器--pyecharts
echarts官網(wǎng)
一、前言
echarts是什么?下面是來(lái)自官方的介紹:?
ECharts,縮寫(xiě)來(lái)自Enterprise Charts,商業(yè)級(jí)數(shù)據(jù)圖表,Echarts 是百度開(kāi)源的一個(gè)數(shù)據(jù)可視化純Javascript(JS) 庫(kù)。主要用于數(shù)據(jù)可視化,可以流暢的運(yùn)行在PC和移動(dòng)設(shè)備上,兼容當(dāng)前絕大部分瀏覽器(IE6/7/8/9/10/11,chrome,firefox,Safari等),底層依賴輕量級(jí)的Canvas類庫(kù)ZRender,提供直觀,生動(dòng),可交互,可高度個(gè)性化定制的數(shù)據(jù)可視化圖表。創(chuàng)新的拖拽重計(jì)算、數(shù)據(jù)視圖、值域漫游等特性大大增強(qiáng)了用戶體驗(yàn),賦予了用戶對(duì)數(shù)據(jù)進(jìn)行挖掘、整合的能力。?
支持折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點(diǎn)圖(氣泡圖)、K線圖、餅圖(環(huán)形圖)、雷達(dá)圖(填充雷達(dá)圖)、和弦圖、力導(dǎo)向布局圖、地圖、儀表盤、漏斗圖、事件河流圖等12類圖表,同時(shí)提供標(biāo)題,詳情氣泡、圖例、值域、數(shù)據(jù)區(qū)域、時(shí)間軸、工具箱等7個(gè)可交互組件,支持多圖表、組件的聯(lián)動(dòng)和混搭展現(xiàn)。
二、用法及安裝
使用echarts還是需要一定的前端知識(shí),這里介紹一個(gè)python包–pyecharts,利用幾行代碼輕松生成echarts風(fēng)格的圖表。pyecharts 是一個(gè)用于生成 Echarts 圖表的類庫(kù)。實(shí)際上就是 Echarts 與 Python 的對(duì)接。
1、安裝:
pip install pyecharts
2、通用配置項(xiàng)
xyAxis:直角坐標(biāo)系中的 x、y 軸(Line、Bar、Scatter、EffectScatter、Kline)?
dataZoom:dataZoom 組件 用于區(qū)域縮放,從而能自由關(guān)注細(xì)節(jié)的數(shù)據(jù)信息,或者概覽數(shù)據(jù)整體,或者去除離群點(diǎn)的影響。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)?
legend:圖例組件。圖例組件展現(xiàn)了不同系列的標(biāo)記(symbol),顏色和名字。可以通過(guò)點(diǎn)擊圖例控制哪些系列不顯示。?
label:圖形上的文本標(biāo)簽,可用于說(shuō)明圖形的一些數(shù)據(jù)信息,比如值,名稱等。?
lineStyle:帶線圖形的線的風(fēng)格選項(xiàng)(Line、Polar、Radar、Graph、Parallel)?
grid3D:3D笛卡爾坐標(biāo)系組配置項(xiàng),適用于 3D 圖形。(Bar3D, Line3D, Scatter3D)?
axis3D:3D 笛卡爾坐標(biāo)系 X,Y,Z 軸配置項(xiàng),適用于 3D 圖形。(Bar3D, Line3D, Scatter3D)?
visualMap:是視覺(jué)映射組件,用于進(jìn)行『視覺(jué)編碼』,也就是將數(shù)據(jù)映射到視覺(jué)元素(視覺(jué)通道)?
markLine&markPoint:圖形標(biāo)記組件,用于標(biāo)記指定的特殊數(shù)據(jù),又標(biāo)記線和標(biāo)記點(diǎn)兩種。(Bar、Line、Kline)?
tooltip:提示框組件,用于移動(dòng)或點(diǎn)擊鼠標(biāo)時(shí)彈出數(shù)據(jù)內(nèi)容
3、圖表詳細(xì)
Bar(柱狀圖/條形圖)?
Bar3D(3D 柱狀圖)?
Boxplot(箱形圖)?
EffectScatter(帶有漣漪特效動(dòng)畫(huà)的散點(diǎn)圖)?
Funnel(漏斗圖)?
Gauge(儀表盤)?
Geo(地理坐標(biāo)系)?
Graph(關(guān)系圖)?
HeatMap(熱力圖)?
Kline(K線圖)?
Line(折線/面積圖)?
Line3D(3D 折線圖)?
Liquid(水球圖)?
Map(地圖)?
Parallel(平行坐標(biāo)系)?
Pie(餅圖)?
Polar(極坐標(biāo)系)?
Radar(雷達(dá)圖)?
Sankey(桑基圖)?
Scatter(散點(diǎn)圖)?
Scatter3D(3D 散點(diǎn)圖)?
ThemeRiver(主題河流圖)?
WordCloud(詞云圖)
用戶自定義
Grid 類:并行顯示多張圖?
Overlap 類:結(jié)合不同類型圖表疊加畫(huà)在同張圖上?
Page 類:同一網(wǎng)頁(yè)按順序展示多圖?
Timeline 類:提供時(shí)間線輪播多張圖
四、示例
因篇幅原因,這里只給出了每種圖表類型的示例(代碼 + 生成圖表),目的是為了引起讀者的興趣。
1、我的第一個(gè)圖表
# encoding: utf-8 # 例子一 from pyecharts import Bar bar = Bar("我的第一個(gè)圖表", "這里是副標(biāo)題") bar.add("服裝", ["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"], [5, 20, 36, 10, 75, 90],is_more_utils=True) bar.show_config() bar.render()
http://localhost:63342/PycharmProjects/Attempt_new/try_echarts/render.html
?
Tips:
可以按右邊的下載按鈕將圖片下載到本地:????add()
主要方法,用于添加圖表的數(shù)據(jù)和設(shè)置各種配置項(xiàng):????show_config()
打印輸出圖表的所有配置項(xiàng):????render()
默認(rèn)將會(huì)在根目錄下生成一個(gè) render.html 的文件,支持 path 參數(shù),設(shè)置文件保存位置,如 render(r"e:my_first_chart.html"),文件用瀏覽器打開(kāi)。
默認(rèn)的編碼類型為 UTF-8,在 Python3 中是沒(méi)什么問(wèn)題的,Python3 對(duì)中文的支持好很多。但是在 Python2 中,編碼的處理是個(gè)很頭疼的問(wèn)題,暫時(shí)沒(méi)能找到完美的解決方法,目前只能通過(guò)文本編輯器自己進(jìn)行二次編碼,我用的是 Visual Studio Code,先通過(guò) Gbk 編碼重新打開(kāi),然后再用 UTF-8 重新保存,這樣用瀏覽器打開(kāi)的話就不會(huì)出現(xiàn)中文亂碼問(wèn)題了。
基本上所有的圖表類型都是這樣繪制的:
chart_name = Type() 初始化具體類型圖表。
add() 添加數(shù)據(jù)及配置項(xiàng)。
render() 生成 .html 文件。
2、 Bar(柱狀圖/條形圖)
# 2.1 import sys reload(sys) sys.setdefaultencoding('utf-8') v1 = [1.1, 4.9, 7.0, 23.2, 25.6, 76.7, 120.6, 162.2, 32.6, 20.0, 6.4, 3.3] # 初始化第一組要展示的數(shù)據(jù) v2 = [5.8, 5.9, 9.0, 26.4, 28.7, 100.7, 195.6, 182.2, 48.7, 18.8, 6.0, 5.7] # 初始化第二組要展示的數(shù)據(jù) attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] # 指定X軸刻度名字 from pyecharts import Bar bar =Bar("標(biāo)記線和標(biāo)記點(diǎn)示例","副標(biāo)題:展示每一維度數(shù)據(jù)的最小,最大,平均值") bar.add("商家A", attr, v1,mark_line=["min","average", "max"]) bar.add("商家B", attr, v2, mark_line=["min","average", "max"]) bar.render()
# 2.2 # encoding: utf-8 from pyecharts import Bar v1 = [1.1, 4.9, 7.0, 23.2, 25.6, 76.7, 120.6, 162.2, 32.6, 20.0, 6.4, 3.3] # 初始化第一組要展示的數(shù)據(jù) v2 = [5.8, 5.9, 9.0, 26.4, 28.7, 100.7, 195.6, 182.2, 48.7, 18.8, 6.0, 5.7] # 初始化第二組要展示的數(shù)據(jù) attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] # 指定X軸刻度名字 bar =Bar("x 軸和 y 軸交換","副標(biāo)題:展示每一維度數(shù)據(jù)的最小,最大,平均值") bar.add("商家A", attr, v1,mark_line=["min","average", "max"]) bar.add("商家B", attr, v2, mark_line=["min","average", "max"],is_convert=True) bar.render()
再來(lái)介紹個(gè)新功能,如果想在一個(gè)網(wǎng)頁(yè)內(nèi)按順序展示多個(gè)圖的話,推薦使用 Page() 類。
使用步驟
1 、引入 Page
2、使用 Page.add() 增加圖
3、使用 Page.render() 渲染網(wǎng)頁(yè)
顯示 多個(gè)圖
3、柱狀圖數(shù)據(jù)堆疊示例
# encoding: utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') # 柱狀圖數(shù)據(jù)堆疊示例 from pyecharts import Bar, Scatter3D from pyecharts import Page page = Page() # step 1 # 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) page.add(bar) # step 2 page.render() # step 3
?
?
4、蒸發(fā)量和降水量對(duì)比柱狀圖
# encoding: utf-8 from pyecharts import Bar #attr = ["{}month".format(i) for i in range(1, 13)] # 指定X軸刻度名字 attr = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] # 指定X軸刻度名字 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] # 初始化第一組要展示的數(shù)據(jù) 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] # 初始化第二組要展示的數(shù)據(jù) v3 = [4.0, 6.9, 9.0, 26.2, 28.6, 75.7, 139.6, 168.2, 28.6, 35.0, 2.4, 5.3] # 初始化第er組要展示的數(shù)據(jù) bar = Bar("Bar chart", "precipitation and evaporation one year") # 設(shè)置圖標(biāo)的名字和標(biāo)題 bar.add("precipitation", attr, v1, mark_line=["average"], mark_point=["max", "min"]) # 設(shè)置第一組要展示數(shù)據(jù)的方面(原始護(hù)甲,平均值,最大值和最小值)設(shè)定圖例 bar.add("evaporation", attr, v2, mark_line=["average"], mark_point=["max", "min"]) # 設(shè)置第二組 bar.add("test_add_more", attr, v3, mark_line=["average"], mark_point=["max", "min"]) # 設(shè)置第三組 bar.render(path="test_bar.html") # 設(shè)置要輸出的html頁(yè)面的保存路徑和名字htest_bar.html,默認(rèn)值保存為為當(dāng)前目錄下render.html #def render(self,path="render.html",template_name="simple_chart.html",object_name="chart",**kwargs):
5、散點(diǎn)圖:
# 4.1、Scatter(散點(diǎn)圖) from pyecharts import Scatter v1 =[10, 20, 30, 40, 50, 60] v2 =[10, 20, 30, 40, 50, 60] scatter =Scatter("散點(diǎn)圖示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) scatter.show_config() scatter.render()
5.2 EffectScatter(帶有漣漪特效動(dòng)畫(huà)的散點(diǎn)圖)
# 4.2 from pyecharts import EffectScatter v1 =[10, 20, 30, 40, 50, 60] v2 =[25, 20, 15, 10, 60, 33] es =EffectScatter("動(dòng)態(tài)散點(diǎn)圖示例") es.add("effectScatter", v1, v2) es.render()
# 5.3動(dòng)態(tài)散點(diǎn)圖各種圖形示例 from pyecharts import EffectScatter es =EffectScatter("", "動(dòng)態(tài)散點(diǎn)圖各種圖形示例") es.add("pin_sample", [20], [20], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin") es.add("rect_sample", [30], [30], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect") es.add("roundRect_sample", [40], [40], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect") es.add("diamond_sample", [50], [50], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond") es.add("arrow_sample", [60], [60], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow") es.add("triangle_sample", [70], [70], symbol_size=6, effect_scale=4.5, effect_period=3,symbol="triangle") es.show_config() es.render()
6、漏斗圖
# Funnel(漏斗圖) from pyecharts import Funnel attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] value =[20, 40, 60, 80, 100, 120] funnel =Funnel("漏斗圖示例") funnel.add("商品", attr, value, is_label_show=True, label_pos="inside", label_text_color="#fff") funnel.render()
7、儀表盤
#4 Gauge(儀表盤) from pyecharts import Gauge gauge =Gauge("儀表盤示例") gauge.add("業(yè)務(wù)指標(biāo)", "完成率", 66.66) gauge.show_config() gauge.render()
8、地圖可視化
?
-
# 8.1 地圖可視化
-
# -*- coding:utf-8 -*-
-
from pyecharts import Geo
-
data = [(u'廣州', 80), (u'漳州', 180)]
-
geo = Geo("全國(guó)主要城市空氣質(zhì)量", "data from pm2.5")
-
attr, value = geo.cast(data)
-
geo.add("city", attr, value, visual_range=[0, 200], maptype='china', visual_text_color="#fff",
-
symbol_size=10, is_visualmap=True)
-
geo.show_config()
-
geo.render()
python地圖可視化可能遇到問(wèn)題,請(qǐng)參見(jiàn)【python可視化系列】關(guān)于 pyecharts 的 'No coordinate is specified for' 報(bào)錯(cuò)解決
8.2、地圖例子
?
-
from pyecharts import Geo
-
data =[(u"北京", 9), (u"鄂爾多斯", 12), (u"招遠(yuǎn)", 12), (u"舟山", 12), (u"齊齊哈爾", 14), (u"鹽城", 15)]
-
geo =Geo("全國(guó)主要城市空氣質(zhì)量", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
-
attr, value =geo.cast(data)
-
geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5)
-
geo.show_config()
-
geo.render()
9、Graph(關(guān)系圖)
?
-
# encoding: utf-8
-
from pyecharts import Graph
-
nodes =[{"name": "結(jié)點(diǎn)1", "symbolSize": 10}, {"name": "結(jié)點(diǎn)2", "symbolSize": 20}, {"name": "結(jié)點(diǎn)3", "symbolSize": 30},
-
{"name": "結(jié)點(diǎn)4", "symbolSize": 40}, {"name": "結(jié)點(diǎn)5", "symbolSize": 10}, {"name": "結(jié)點(diǎn)6", "symbolSize": 40},
-
{"name": "結(jié)點(diǎn)7", "symbolSize": 30}, {"name": "結(jié)點(diǎn)8", "symbolSize": 20}]
-
links =[]
-
p=0
-
for i in nodes:
-
if (p % 2 == 1):
-
continue
-
p += 1
-
for j in nodes:
- ?
-
links.append({"source": i.get('name'), "target": j.get('name')})
-
graph = Graph("關(guān)系圖-環(huán)形布局示例")
-
graph.add("", nodes, links, is_label_show=True, repulsion=8000, layout='circular', label_text_color=None)
-
graph.show_config()
-
graph.render()
10、微博轉(zhuǎn)發(fā)關(guān)系圖
?
-
# encoding: utf-8
-
#微博轉(zhuǎn)發(fā)關(guān)系圖
-
from pyecharts import Graph
-
import json
-
with open("jsonweibo.json", "r") as f:
-
j =json.load(f)
-
nodes, links, categories, cont, mid, userl =j
-
graph =Graph("微博轉(zhuǎn)發(fā)關(guān)系圖", width=1200, height=600)
-
graph.add("", nodes, links, categories, label_pos="right", repulsion=50, is_legend_show=False, line_curve=0.2, label_text_color=None)
-
graph.show_config()
-
graph.render()
11、折線圖-階梯圖示例
?
-
#11.1 Line(折線/階梯圖)
-
from pyecharts import Line
-
attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
-
v1 =[5, 20, 36, 10, 10, 100]
-
v2 =[55, 60, 16, 20, 15, 80]
-
line =Line("折線圖示例")
-
line.add("商家A", attr, v1, mark_point=["average"])
-
line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"])
-
line.show_config()
-
line.render()
-
line =Line("折線圖-階梯圖示例")
-
line.add("商家A", attr, v1, is_step=True, is_label_show=True)
-
line.show_config()
-
line.render()
11.2、折線圖/面積圖示例
# 8、Line(折線圖/面積圖) from pyecharts import Line attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[5, 20, 36, 10, 10, 100] v2 =[55, 60, 16, 20, 15, 80] line =Line("折線圖-面積圖示例") line.add("商家A", attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None) line.add("商家B", attr, v2, is_fill=True, area_color='#000', area_opacity=0.3, is_smooth=True) line.show_config() line.render()
12、水球圖示例
# 12.1、Line(水球圖示例) from pyecharts import Liquid liquid =Liquid("水球圖示例") liquid.add("Liquid", [0.6]) liquid.show_config() liquid.render()
12.2、水球圖示例二
from pyecharts import Liquid liquid =Liquid("水球圖示例") liquid.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_outline_show=False) liquid.show_config() liquid.render()
12.3、水球圖示例:
from pyecharts import Liquid liquid =Liquid("水球圖示例") liquid.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_animation=False, shape='diamond') liquid.show_config() liquid.render()
13、Map 結(jié)合 VisualMap 示例
from pyecharts import Map value =[155, 10, 66, 78, 33, 80, 190, 53, 49.6] attr =["福建", "山東", "北京", "上海", "甘肅", "新疆", "河南", "廣西", "西藏"] map=Map("Map 結(jié)合 VisualMap 示例", width=1200, height=600) map.add("", attr, value, maptype='china', is_visualmap=True, visual_text_color='#000') map.show_config() map.render()
14、省級(jí)地圖示例
# encoding: utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') from pyecharts import Map value =[20, 190, 253, 77, 65] attr =['許昌市', '鄭州市', '開(kāi)封市', '漯河市', '信陽(yáng)市市'] map=Map("河南地圖示例", width=1200, height=600) map.add("", attr, value, maptype=u'河南', is_visualmap=True, visual_text_color='#000') map.show_config() map.render()
15、 Parallel(平行坐標(biāo)系)
# encoding: utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') #10 Parallel(平行坐標(biāo)系) from pyecharts import Parallel c_schema =[ {"dim": 0, "name": "data"}, {"dim": 1, "name": "AQI"}, {"dim": 2, "name": "PM2.5"}, {"dim": 3, "name": "PM10"}, {"dim": 4, "name": "CO"}, {"dim": 5, "name": "NO2"}, {"dim": 6, "name": "CO2"}, {"dim": 7, "name": "等級(jí)", "type": "category", "data": ['優(yōu)', '良', '輕度污染', '中度污染', '重度污染', '嚴(yán)重污染']}] data =[ [1, 91, 45, 125, 0.82, 34, 23, "良"], [2, 65, 27, 78, 0.86, 45, 29, "良"], [3, 83, 60, 84, 1.09, 73, 27, "良"], [4, 109, 81, 121, 1.28, 68, 51, "輕度污染"], [5, 106, 77, 114, 1.07, 55, 51, "輕度污染"], [6, 109, 81, 121, 1.28, 68, 51, "輕度污染"], [7, 106, 77, 114, 1.07, 55, 51, "輕度污染"], [8, 89, 65, 78, 0.86, 51, 26, "良"], [9, 53, 33, 47, 0.64, 50, 17, "良"], [10, 80, 55, 80, 1.01, 75, 24, "良"], [11, 117, 81, 124, 1.03, 45, 24, "輕度污染"], [12, 99, 71, 142, 1.1, 62, 42, "良"], [13, 95, 69, 130, 1.28, 74, 50, "良"], [14, 116, 87, 131, 1.47, 84, 40, "輕度污染"]] parallel =Parallel("平行坐標(biāo)系-用戶自定義指示器") parallel.config(c_schema=c_schema) parallel.add("parallel", data) parallel.show_config() parallel.render()
16、3D散點(diǎn)圖示例:
# encoding: utf-8 # 3D 散點(diǎn)圖示例 # scatter3D import random from pyecharts import Bar, Scatter3D from pyecharts import Page page = Page() # step 1 data = [[random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)] for _ in range(80)] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] scatter3D = Scatter3D("3D 散點(diǎn)圖示例", width=1200, height=600) scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color) page.add(scatter3D) # step 2 page.render() # step 3
17、餅狀圖示例:
# encoding: utf-8 from pyecharts import Pie attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[11, 12, 13, 10, 10, 10] pie =Pie("餅圖示例") pie.add("", attr, v1, is_label_show=True) pie.show_config() pie.render()
17.2、餅圖-玫瑰圖示例
# encoding: utf-8 from pyecharts import Pie attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"] v1 =[11, 12, 13, 10, 10, 10] v2 =[19, 21, 32, 20, 20, 33] pie =Pie("餅圖-玫瑰圖示例", title_pos='center', width=900) pie.add("商品A", attr, v1, center=[25, 50], is_random=True, radius=[30, 75], rosetype='radius') pie.add("商品B", attr, v2, center=[75, 50], is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True) pie.show_config() pie.render()
?
18、Polar(極坐標(biāo)系)
18.1、極坐標(biāo)系-堆疊柱狀圖示例
# encoding: utf-8 #12 Polar(極坐標(biāo)系) from pyecharts import Polar radius =['周一', '周二', '周三', '周四', '周五', '周六', '周日'] polar =Polar("極坐標(biāo)系-堆疊柱狀圖示例", width=1200, height=600) polar.add("A", [1, 2, 3, 4, 3, 5, 1], radius_data=radius, type='barRadius', is_stack=True) polar.add("B", [2, 4, 6, 1, 2, 3, 1], radius_data=radius, type='barRadius', is_stack=True) polar.add("C", [1, 2, 3, 4, 1, 2, 5], radius_data=radius, type='barRadius', is_stack=True) polar.show_config() polar.render()
18.2、極坐標(biāo)系-堆疊柱狀圖示例
from pyecharts import Polar radius =['周一', '周二', '周三', '周四', '周五', '周六', '周日'] polar =Polar("極坐標(biāo)系-堆疊柱狀圖示例", width=1200, height=600) polar.add("", [1, 2, 3, 4, 3, 5, 1], radius_data=radius, type='barAngle', is_stack=True) polar.add("", [2, 4, 6, 1, 2, 3, 1], radius_data=radius, type='barAngle', is_stack=True) polar.add("", [1, 2, 3, 4, 1, 2, 5], radius_data=radius, type='barAngle', is_stack=True) polar.show_config() polar.render()
19、Radar(雷達(dá)圖)
#13 Radar(雷達(dá)圖) from pyecharts import Radar schema =[ ("銷售", 6500), ("管理", 16000), ("信息技術(shù)", 30000), ("客服", 38000), ("研發(fā)", 52000), ("市場(chǎng)", 25000)] v1 =[[4300, 10000, 28000, 35000, 50000, 19000]] v2 =[[5000, 14000, 28000, 31000, 42000, 21000]] radar =Radar() radar.config(schema) radar.add("預(yù)算分配", v1, is_splitline=True, is_axisline_show=True) radar.add("實(shí)際開(kāi)銷", v2, label_color=["#4e79a7"], is_area_show=False) radar.show_config() radar.render()
19.2、雷達(dá)圖示例
from pyecharts import Radar value_bj =[ [55, 9, 56, 0.46, 18, 6, 1], [25, 11, 21, 0.65, 34, 9, 2], [56, 7, 63, 0.3, 14, 5, 3], [33, 7, 29, 0.33, 16, 6, 4]] value_sh =[ [91, 45, 125, 0.82, 34, 23, 1], [65, 27, 78, 0.86, 45, 29, 2], [83, 60, 84, 1.09, 73, 27, 3], [109, 81, 121, 1.28, 68, 51, 4]] c_schema=[{"name": "AQI", "max": 300, "min": 5}, {"name": "PM2.5", "max": 250, "min": 20}, {"name": "PM10", "max": 300, "min": 5}, {"name": "CO", "max": 5}, {"name": "NO2", "max": 200}, {"name": "SO2", "max": 100}] radar =Radar() radar.config(c_schema=c_schema, shape='circle') radar.add("北京", value_bj, item_color="#f9713c", symbol=None) radar.add("上海", value_sh, item_color="#b3e4a1", symbol=None) radar.show_config() radar.render()
20、詞云圖1:
?
#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.show_config() wordcloud.render()
20.2、詞云圖2:
?
#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=[30, 100], shape='diamond') wordcloud.show_config() wordcloud.render()
21、折線圖示例:
?
# 折線圖示例 from pyecharts import Line attr =['周一', '周二', '周三', '周四', '周五', '周六', '周日',] line =Line("折線圖示例") line.add("最高氣溫", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低氣溫", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], yaxis_formatter="°C") line.show_config() line.render()
22、嵌套餅圖
?
from pyecharts import Pie pie =Pie("餅圖示例", title_pos='center', width=1000, height=600) pie.add("", ['A', 'B', 'C', 'D', 'E', 'F'], [335, 321, 234, 135, 251, 148], radius=[40, 55],is_label_show=True) pie.add("", ['H', 'I', 'J'], [335, 679, 204], radius=[0, 30], legend_orient='vertical', legend_pos='left') pie.show_config() pie.render()
23、餅圖再嵌套
?
import random from pyecharts import Pie attr =['A', 'B', 'C', 'D', 'E', 'F'] pie =Pie("餅圖示例", width=1000, height=600) pie.add("", attr, [random.randint(0, 100) for _ in range(6)], radius=[50, 55], center=[25, 50],is_random=True) pie.add("", attr, [random.randint(20, 100) for _ in range(6)], radius=[0, 45], center=[25, 50],rosetype='area') pie.add("", attr, [random.randint(0, 100) for _ in range(6)], radius=[50, 55], center=[65, 50],is_random=True) pie.add("", attr, [random.randint(20, 100) for _ in range(6)], radius=[0, 45], center=[65, 50],rosetype='radius') pie.show_config() pie.render()
?
24、各類電影中"好片"所占的比例
from pyecharts import Pie pie =Pie('各類電影中"好片"所占的比例', "數(shù)據(jù)來(lái)著豆瓣", title_pos='center') pie.add("", ["劇情", ""], [25, 75], center=[10, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, ) pie.add("", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, legend_pos='left') pie.add("", ["愛(ài)情", ""], [14, 86], center=[50, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["驚悚", ""], [11, 89], center=[70, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["冒險(xiǎn)", ""], [27, 73], center=[90, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["動(dòng)作", ""], [15, 85], center=[10, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["喜劇", ""], [54, 46], center=[30, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["懸疑", ""], [25, 75], center=[70, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None) pie.add("", ["犯罪", ""], [28, 72], center=[90, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, is_legend_show=True, legend_top="center") pie.show_config() pie.render()
參考:https://www.sohu.com/a/158701638_609198
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
