小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

更高級的數(shù)據(jù)可視化,使用pyecharts制作精美圖表

 板橋胡同37號 2020-02-29


作者:劉早起早起

來源:早起Python

更高級的數(shù)據(jù)可視化,
使用pyecharts制作精美圖表

提到用python進(jìn)行數(shù)據(jù)可視化,那么大多數(shù)人選擇都是matplotlib,但是生成的圖表不能進(jìn)行交互操作,比如時間軸拖動、交互式圖例等,那么本文將對pyecharts進(jìn)行詳細(xì)講解。

前言

目前pyecharts已經(jīng)更新到1.x版本,而1.x版本與0.5.x版本在構(gòu)圖語法上有很大的不一樣,1.x的版本語法更靠近Echarts,但是方便理解的還是0.5.x版本,所以本文基于pyecharts 0.5.11版本進(jìn)行講解。大部分示例來自官方文檔,并添加注釋。建議打開jupyter notebook邊敲邊學(xué)。

可以使用 pip install pyecharts==0.5.11 的方式來安裝。

那么在詳解講解各個圖表怎樣繪制之前,先講一下pyecharts繪制的基本步驟(套路)??

柱狀圖/條形圖

柱狀/條形圖,通過柱形的高度/條形的寬度來表現(xiàn)數(shù)據(jù)的大小。

直接看代碼就行,所有內(nèi)容會在代碼里面注釋

is_stack 實現(xiàn)數(shù)據(jù)堆疊

from pyecharts import Bar #導(dǎo)入bar模塊

attr = ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子'] #設(shè)置x軸數(shù)據(jù)
v1 = [5, 20, 36, 10, 75, 90] #第一組數(shù)據(jù)
v2 = [10, 25, 8, 60, 20, 80] #第二組數(shù)據(jù)
bar = Bar('柱狀圖數(shù)據(jù)堆疊示例') #實例一個柱狀圖
bar.add('商家A', attr, v1, is_stack=True) #用add函數(shù)往圖里添加數(shù)據(jù)并設(shè)置堆疊
bar.add('商家B', attr, v2, is_stack=True)
bar.render() #展示數(shù)據(jù)

使用標(biāo)記點和標(biāo)記線

from pyecharts import Bar

bar = Bar('標(biāo)記線和標(biāo)記點示例')
bar.add('商家A', attr, v1, mark_point=['average']) #設(shè)置標(biāo)記點
bar.add('商家B', attr, v2, mark_line=['min', 'max']) #設(shè)置標(biāo)記線
bar.render()

is_convert 交換 XY 軸

from pyecharts import Bar

bar = Bar('x 軸和 y 軸交換')
bar.add('商家A', attr, v1)
bar.add('商家B', attr, v2, is_convert=True) #設(shè)置交換XY軸
bar.render()

dataZoom 效果,'slider' 類型

import random

attr = ['{}天'.format(i) for i in range(30)]
v1 = [random.randint(1, 30) for _ in range(30)] #創(chuàng)建數(shù)據(jù)
bar = Bar('Bar - datazoom - slider 示例')
bar.add('', attr, v1, is_label_show=True, is_datazoom_show=True) #設(shè)置datazoom
bar.render()

多 dataZoom 效果,效果同時支持 X、Y 軸

days = ['{}天'.format(i) for i in range(30)]
days_v1 = [random.randint(1, 30) for _ in range(30)]
bar = Bar('Bar - datazoom - xaxis/yaxis 示例')
bar.add(
'',
days,
days_v1,
# 默認(rèn)為 X 軸,橫向
is_datazoom_show=True,
datazoom_type='slider',
datazoom_range=[10, 25],
# 新增額外的 dataZoom 控制條,縱向
is_datazoom_extra_show=True,
datazoom_extra_type='slider',
datazoom_extra_range=[10, 25],
is_toolbox_show=False,
)
bar.render()

3D柱狀圖

設(shè)置 grid3d_shading 可以讓柱狀更真實

bar3d = Bar3D('3D 柱狀圖示例', width=1200, height=600)
bar3d.add(
'',
x_axis,
y_axis,
[[d[1], d[0], d[2]] for d in data],
is_visualmap=True,
visual_range=[0, 20],
visual_range_color=range_color,
grid3d_width=200,
grid3d_depth=80,
grid3d_shading='lambert',
)
bar3d.render()

漏斗圖

標(biāo)簽顯示在內(nèi)部

from pyecharts import Funnel #導(dǎo)入漏斗圖

attr = ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
value = [20, 40, 60, 80, 100, 120]
funnel = Funnel('漏斗圖示例')
funnel.add(
'商品',
attr,
value,
is_label_show=True, #顯示標(biāo)簽
label_pos='inside', #標(biāo)簽位置
label_text_color='#fff', #顏色
)
funnel.render()

標(biāo)簽顯示在外部

funnel = Funnel('漏斗圖示例', width=600, height=400, title_pos='center')
funnel.add(
'商品',
attr,
value,
is_label_show=True,
label_pos='outside',
legend_orient='vertical',
legend_pos='left',
)
funnel.render()

儀表盤

from pyecharts import Gauge #和之前一樣 ,導(dǎo)入相關(guān)繪圖包

gauge = Gauge('儀表盤示例') #標(biāo)題
gauge.add('業(yè)務(wù)指標(biāo)', '完成率', 66.66) #數(shù)據(jù)
gauge.render()

折線圖

from pyecharts import Line #導(dǎo)入相關(guān)折線圖

attr = ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
v1 = [5, 20, 36, 10, 10, 100]
v2 = [55, 60, 16, 20, 15, 80] #設(shè)置數(shù)據(jù)
line = Line('折線圖示例') #創(chuàng)建一個實例
line.add('商家A', attr, v1, mark_point=['average']) #添加數(shù)據(jù)和標(biāo)記點
line.add('商家B', attr, v2, is_smooth=True, mark_line=['max', 'average'])
line.render()

標(biāo)記點其他配置

line = Line('折線圖示例')
line.add(
'商家A',
attr,
v1,
mark_point=['average', {'coord': ['褲子', 10], 'name': '這是我想要的第一個標(biāo)記點'}],
) #添加第一組數(shù)據(jù)
line.add(
'商家B',
attr,
v2,
is_smooth=True,
mark_point=[{'coord': ['襪子', 80], 'name': '這是我想要的第二個標(biāo)記點'}],
) #添加第二組數(shù)據(jù)
line.render()

使用 area_opacity繪制面積圖

line = Line('折線圖-面積圖示例')
line.add(
'商家A',
attr,
v1,
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, #設(shè)置面積
is_smooth=True,
)
line.render()

3D折線圖

畫個彈簧

from pyecharts import Line3D

import math
_data = []
for t in range(0, 25000):
_t = t / 1000
x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)
y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)
z = _t + 2.0 * math.sin(75 * _t)
_data.append([x, y, z])
range_color = [
'#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',
'#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
line3d = Line3D('3D 折線圖示例', width=1200, height=600)
line3d.add(
'',
_data,
is_visualmap=True,
visual_range_color=range_color,
visual_range=[0, 30],
is_grid3d_rotate=True,
grid3d_rotate_speed=180,
)
line3d.render()

餅圖

餅圖主要表現(xiàn)不同類目的數(shù)據(jù)在總和中占比。每個的弧度表示數(shù)據(jù)數(shù)量的比例。

餅圖示例

from pyecharts import Pie

attr = ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
v1 = [11, 12, 13, 10, 10, 10]
pie = Pie('餅圖示例')
pie.add('', attr, v1, is_label_show=True) #顯示標(biāo)簽
pie.render()

調(diào)整圓環(huán)

from pyecharts import Pie

attr = ['襯衫', '羊毛衫', '雪紡衫', '褲子', '高跟鞋', '襪子']
v1 = [11, 12, 13, 10, 10, 10]
pie = Pie('餅圖-圓環(huán)圖示例', title_pos='center') ¥創(chuàng)建餅圖
pie.add(
'',
attr,
v1,
radius=[40, 75], #設(shè)置兩個環(huán)大小
label_text_color=None,
is_label_show=True,
legend_orient='vertical',#垂直顯示圖例
legend_pos='left',#圖例放在左邊
)
pie.render()

餅圖-玫瑰圖

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.render()

地圖

全國地圖(結(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', #設(shè)置中國
is_visualmap=True,
visual_text_color='#000',
)
map.render()

分省地圖

from pyecharts import Map

value = [20, 190, 253, 77, 65]
attr = ['汕頭市', '汕尾市', '揭陽市', '陽江市', '肇慶市']
map = Map('廣東地圖示例', width=1200, height=600)
map.add(
'', attr, value, maptype='廣東', is_visualmap=True, visual_text_color='#000'
) #設(shè)置廣東省
map.render()

世界地圖

value = [95.1, 23.2, 43.3, 66.4, 88.5]
attr= ['China', 'Canada', 'Brazil', 'Russia', 'United States']
map = Map('世界地圖示例', width=1200, height=600)
map.add(
'',
attr,
value,
maptype='world', #設(shè)置世界地圖
is_visualmap=True,
visual_text_color='#000',
)
map.render()

詞云圖

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]) #設(shè)置大小
wordcloud.render()

結(jié)束語

一些在數(shù)據(jù)可視化中會涉及到的基本圖表都在上面,繪制方法也基本上一致:創(chuàng)建一個需要的實例,然后往里面添加各種數(shù)據(jù)與配置就可以了,那么最后再來回顧一下使用pyecharts繪制圖表的一般步驟:


-------------------End-------------------

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多