十分鐘掌握pyecharts十類頂級圖,建議收藏

十分鐘掌握pyecharts十類頂級圖,建議收藏


使用pip install pyecharts 安裝,安裝後的版本為 v1.6

pyecharts幾行代碼就能繪製出有特色的的圖形,繪圖API鏈式調用,使用方便。

1 儀表盤

from pyecharts import charts# 儀表盤gauge = charts.Gauge()gauge.add( Python小例子 , [( Python機器學習 , 30), ( Python基礎 , 70.),                        ( Python正則 , 90)])gauge.render(path="./data/儀表盤.html")print( ok )

儀表盤中共展示三項,每項的比例為30%,70%,90%,如下圖默認名稱顯示第一項:Python機器學習,完成比例為30%

十分鐘掌握pyecharts十類頂級圖,建議收藏

2 漏斗圖

from pyecharts import options as optsfrom pyecharts.charts import Funnel, Pagefrom random import randintdef funnel_base() -> Funnel:    c = (        Funnel()        .add("豪車", [list(z) for z in zip([ 寶馬 ,  法拉利 ,  奔馳 ,  奧迪 ,  大眾 ,  豐田 ,  特斯拉 ],                                         [randint(1, 20) for _ in range(7)])])        .set_global_opts(title_opts=opts.TitleOpts(title="豪車漏斗圖"))    )    return c    funnel_base().render( ./img/car_funnel.html )print( ok )

以7種車型及某個屬性值繪製的漏斗圖,屬性值大越靠近漏斗的大端。


十分鐘掌握pyecharts十類頂級圖,建議收藏


3 日曆圖

import datetimeimport randomfrom pyecharts import options as optsfrom pyecharts.charts import Calendardef calendar_interval_1() -> Calendar:    begin = datetime.date(2019, 1, 1)    end = datetime.date(2019, 12, 27)    data = [        [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]        for i in range(0, (end - begin).days + 1, 2)  # 隔天統計    ]    calendar = (        Calendar(init_opts=opts.InitOpts(width="1200px")).add(            "", data, calendar_opts=opts.CalendarOpts(range_="2019"))        .set_global_opts(            title_opts=opts.TitleOpts(title="Calendar-2019年步數統計"),            visualmap_opts=opts.VisualMapOpts(                max_=25000,                min_=1000,                orient="horizontal",                is_piecewise=True,                pos_top="230px",                pos_left="100px",            ),        )    )    return calendarcalendar_interval_1().render( ./img/calendar.html )print( ok )

繪製2019年1月1日到12月27日的步行數,官方給出的圖形寬度900px不夠,只能顯示到9月份,本例使用opts.InitOpts(width="1200px")做出微調,並且visualmap顯示所有步數,每隔一天顯示一次:

十分鐘掌握pyecharts十類頂級圖,建議收藏


4 關係圖(graph)

import jsonimport osfrom pyecharts import options as optsfrom pyecharts.charts import Graph, Pagedef graph_base() -> Graph:    nodes = [        {"name": "cus1", "symbolSize": 10},        {"name": "cus2", "symbolSize": 30},        {"name": "cus3", "symbolSize": 20}    ]    links = []    for i in nodes:        if i.get( name ) ==  cus1 :            continue        for j in nodes:            if j.get( name ) ==  cus1 :                continue            links.append({"source": i.get("name"), "target": j.get("name")})    c = (        Graph()        .add("", nodes, links, repulsion=8000)        .set_global_opts(title_opts=opts.TitleOpts(title="customer-influence"))    )    return c

構建圖,其中客戶點1與其他兩個客戶都沒有關係(link),也就是不存在有效邊:

十分鐘掌握pyecharts十類頂級圖,建議收藏


還可以做成微博轉發關係圖

十分鐘掌握pyecharts十類頂級圖,建議收藏


甚至依存關係圖

十分鐘掌握pyecharts十類頂級圖,建議收藏


5 水球圖

from pyecharts import options as optsfrom pyecharts.charts import Liquid, Pagefrom pyecharts.globals import SymbolTypedef liquid() -> Liquid:    c = (        Liquid()        .add("lq", [0.67, 0.30, 0.15])        .set_global_opts(title_opts=opts.TitleOpts(title="Liquid"))    )    return cliquid().render( ./img/liquid.html )

水球圖的取值[0.67, 0.30, 0.15]表示下圖中的三個波浪線,一般代表三個百分比:

十分鐘掌握pyecharts十類頂級圖,建議收藏

6 餅圖

from pyecharts import options as optsfrom pyecharts.charts import Piefrom random import randintdef pie_base() -> Pie:    c = (        Pie()        .add("", [list(z) for z in zip([ 寶馬 ,  法拉利 ,  奔馳 ,  奧迪 ,  大眾 ,  豐田 ,  特斯拉 ],                                       [randint(1, 20) for _ in range(7)])])        .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))    )    return cpie_base().render( ./img/pie_pyecharts.html )


十分鐘掌握pyecharts十類頂級圖,建議收藏

7 極座標

import randomfrom pyecharts import options as optsfrom pyecharts.charts import Page, Polardef polar_scatter0() -> Polar:    data = [(alpha, random.randint(1, 100)) for alpha in range(101)] # r = random.randint(1, 100)    print(data)    c = (        Polar()        .add("", data, type_="bar", label_opts=opts.LabelOpts(is_show=False))        .set_global_opts(title_opts=opts.TitleOpts(title="Polar"))    )    return cpolar_scatter0().render( ./img/polar.html )

極座標表示為(夾角,半徑),如(6,94)表示"夾角"為6,半徑94的點:


十分鐘掌握pyecharts十類頂級圖,建議收藏

8 詞雲圖

from pyecharts import options as optsfrom pyecharts.charts import Page, WordCloudfrom pyecharts.globals import SymbolTypewords = [    ("Python", 100),    ("C++", 80),    ("Java", 95),    ("R", 50),    ("JavaScript", 79),    ("C", 65)]def wordcloud() -> WordCloud:    c = (        WordCloud()        # word_size_range: 單詞字體大小範圍        .add("", words, word_size_range=[20, 100], shape= cardioid )        .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud"))    )    return cwordcloud().render( ./img/wordcloud.html )

("C",65)表示在本次統計中C語言出現65次


9 熱力圖

 
import randomfrom pyecharts import options as optsfrom pyecharts.charts import HeatMapdef heatmap_car() -> HeatMap: x = [ 寶馬 , 法拉利 , 奔馳 , 奧迪 , 大眾 , 豐田 , 特斯拉 ] y = [ 中國 , 日本 , 南非 , 澳大利亞 , 阿根廷 , 阿爾及利亞 , 法國 , 意大利 , 加拿大 ] value = [[i, j, random.randint(0, 100)] for i in range(len(x)) for j in range(len(y))] c = ( HeatMap() .add_xaxis(x) .add_yaxis("銷量", y, value) .set_global_opts( title_opts=opts.TitleOpts(title="HeatMap"), visualmap_opts=opts.VisualMapOpts(), ) ) return cheatmap_car().render( ./img/heatmap_pyecharts.html )


十分鐘掌握pyecharts十類頂級圖,建議收藏


10 地圖


十分鐘掌握pyecharts十類頂級圖,建議收藏

地圖之前用過很多次,不過多說明,看看效果。


十分鐘掌握pyecharts十類頂級圖,建議收藏


省級區域圖

十分鐘掌握pyecharts十類頂級圖,建議收藏


世界地圖

十分鐘掌握pyecharts十類頂級圖,建議收藏


甚至還可以結合百度地圖做可縮放地圖。


結語

pyecharts有30多種不同的可視化圖形,開源免費且文檔案例詳細,可作為數據可視化首選!


分享到:


相關文章: