pyecharts 十種圖形演示

首先要安裝模塊

conda install pyecharts

或者

pip install pyecharts

具體的echarts操作和介紹可見官網echarts,我也推薦W3Cschool,而pyecharts可以參考pyecharts官網,很詳盡。
再進行下面可視化的時候,首先都會引入options

from pyecharts import options as opts

一、儀表盤

代碼:

from pyecharts.charts import Gauge

def gauge_base() -> Gauge:
    c = (
        Gauge(init_opts=opts.InitOpts(page_title="儀表盤-演示"))
        .add(
            "", 
            [("我的進化程度", 80)],
            title_label_opts=opts.LabelOpts(horizontal_align="center")
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="儀表盤演示", pos_left="center"))
        )
    return c
gauge_base().render()

效果:
儀表盤

二、漏斗圖

代碼:

from pyecharts.charts import Funnel

def funner_base() -> Funnel:
    c = (
        Funnel(init_opts=opts.InitOpts(page_title="漏斗圖-演示"))
        .add(
            "funnel",
            [z for z in zip(["第一階段", "第二階段", "第三階段"], [10, 50, 80])],
            label_opts=opts.LabelOpts(position="inside")
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="漏斗圖演示", pos_left="right"))
        )
    return c
funner_base().render()

效果:
漏斗圖

三、圖

代碼:

from pyecharts.charts import Graph

def graph_base() -> Graph:
    nodes = [
        opts.GraphNode(name="節點0", symbol_size=80),
        opts.GraphNode(name="節點1", symbol_size=60),
        opts.GraphNode(name="節點2", symbol_size=60),
        opts.GraphNode(name="節點3", symbol_size=60),
        opts.GraphNode(name="節點4", symbol_size=60),
        opts.GraphNode(name="節點1.1", symbol_size=40),
        opts.GraphNode(name="節點1.2", symbol_size=40),
        opts.GraphNode(name="節點1.3", symbol_size=40),
        opts.GraphNode(name="節點1.4", symbol_size=40),
        opts.GraphNode(name="節點3.1", symbol_size=40),
        opts.GraphNode(name="節點3.2", symbol_size=40),
        opts.GraphNode(name="節點3.3", symbol_size=40),
        opts.GraphNode(name="節點3.4", symbol_size=40),
        opts.GraphNode(name="節點3.3.1", symbol_size=20),
        opts.GraphNode(name="節點3.3.2", symbol_size=20),
        opts.GraphNode(name="節點3.3.3", symbol_size=20),
        opts.GraphNode(name="節點3.3.4", symbol_size=20)
        ]
    links = [
        opts.GraphLink(source="節點0", target="節點1", value=1),
        opts.GraphLink(source="節點0", target="節點2", value=1),
        opts.GraphLink(source="節點0", target="節點3", value=1),
        opts.GraphLink(source="節點0", target="節點4", value=1),
        opts.GraphLink(source="節點1", target="節點1.1", value=2),
        opts.GraphLink(source="節點1", target="節點1.2", value=2),
        opts.GraphLink(source="節點1", target="節點1.3", value=2),
        opts.GraphLink(source="節點1", target="節點1.4", value=2),
        opts.GraphLink(source="節點3", target="節點3.1", value=2),
        opts.GraphLink(source="節點3", target="節點3.2", value=2),
        opts.GraphLink(source="節點3", target="節點3.3", value=2),
        opts.GraphLink(source="節點3", target="節點3.4", value=2),
        opts.GraphLink(source="節點3.3", target="節點3.3.1", value=3),
        opts.GraphLink(source="節點3.3", target="節點3.3.2", value=3),
        opts.GraphLink(source="節點3.3", target="節點3.3.3", value=3),
        opts.GraphLink(source="節點3.3", target="節點3.3.4", value=3),
        ]
    c = (
        Graph(init_opts=opts.InitOpts(width="1080px", height="700px", page_title="圖-演示"))
        .add(
            "graph",
            nodes,
            links,
            label_opts=opts.LabelOpts(position="inside"),
            repulsion=2000,
            is_draggable=True,
            layout="force",
            symbol="roundRect",
            edge_label=opts.LabelOpts(
                is_show=True,
                position="middle",
                formatter="{b} "
                )
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="圖演示", pos_left="center"))
        )
    return c
graph_base().render()

效果:
關係圖

四、水球圖

代碼:

from pyecharts.charts import Liquid

def liquid_base() -> Liquid:
    c = (
        Liquid(init_opts=opts.InitOpts(page_title="水球圖-演示"))
        .add(
            "liquid",
            [0.78],
            shape="rect"
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="水球圖", pos_left="center"))
        )
    return c
liquid_base().render()

效果:
水球圖

五、餅圖

代碼:

from pyecharts.charts import Pie

def pie_base() -> Pie:
    c = (
        Pie(init_opts=opts.InitOpts(page_title="餅圖-演示"))
        .add(
            "pie",
            [("男人購物花費", 20), ("女人購物花費", 80)],
            radius=["40%", "60%"],
            center=["50%", "50%"],
            label_opts=opts.LabelOpts(formatter="{b}:{c}%")
            )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="餅圖", pos_left="center", pos_top="10%"),
            legend_opts=opts.LegendOpts(orient="vertical", pos_right="20%", pos_top="50%")
            )
        )
    return c
pie_base().render()

效果:
餅圖

六、詞雲圖

代碼:

from pyecharts.charts import WordCloud

def wcloud_base() -> WordCloud:
    words = [("我",10000), ("比爾蓋茨",9000), ("索羅斯",8000), ("馬雲",7000), ("馬化騰",6000), ("史玉柱",4000), ("王傳福",900), ("*大大",10000), ("徐鳳年",10000), ("洪敬巖",3000), ("王初冬",2000), ("劍來",1000)]
    c = (
        WordCloud(init_opts=opts.InitOpts(page_title="詞雲圖-演示"))
        .add(
            "wordcloud",
            words,
            shape="cardioid"
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="詞雲圖", pos_left="center"))
        )
    return c
wcloud_base().render()

效果:
詞雲圖

七、柱狀圖

代碼:

from pyecharts.charts import Bar
from pyecharts.commons.utils import JsCode

def bar_base() -> Bar:
    c = (
        Bar(init_opts=opts.InitOpts(page_title="柱狀圖-演示"))
        .add_xaxis(
            ["現有確診/累計確診", "現有疑似/累計治癒", "現有重症/累計死亡"]
            )
        .add_yaxis(
            "",
            [29994, 587, 6806]
            )
        .add_yaxis(
            "",
            [80303, 47362, 2947]
            )
        .set_series_opts(
            itemstyle_opts={
                "color":JsCode("""{
                    type: 'linear',
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [
                        {offset: 0, color: 'red'}, 
                        {offset: 1, color: 'blue'}
                        ],
                    global: false
                    }"""
                    )
                }
            )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="2020年03月03日疫情實時大數據", pos_left="center"),
            legend_opts=opts.LegendOpts(orient="victical", pos_right="10%", pos_top="center")
            )
        )
    return c
bar_base().render()

效果:
柱狀圖

八、雷達圖

代碼:

from pyecharts.charts import Radar

def radar_base() -> Radar:
    c = (
        Radar(init_opts=opts.InitOpts(page_title="雷達圖-演示"))
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="編程水平", max_=100),
                opts.RadarIndicatorItem(name="數學基本功", max_=100),
                opts.RadarIndicatorItem(name="記憶力", max_=100),
                opts.RadarIndicatorItem(name="理解力", max_=100),
                opts.RadarIndicatorItem(name="自學能力", max_=100),
                opts.RadarIndicatorItem(name="抗壓能力", max_=100)
                ],
            shape="circle"
            )
        .add(
            "我的表現",
            [[60, 65, 30, 55, 75, 70]],
            areastyle_opts=opts.AreaStyleOpts(opacity=0.1)
            )
        .add(
            "平均水平",
            [[60, 60, 60, 60, 60, 60]],
            linestyle_opts=opts.LineStyleOpts(width=2, color='blue')
            )
        .set_global_opts(
            title_opts=opts.TitleOpts(title="雷達圖", pos_left="center"),
            legend_opts=opts.LegendOpts(pos_right="20%", pos_top="10%", orient="vectical")
            )
        )
    return c
radar_base().render()

效果:
雷達圖

九、旭日圖

其實就是日頭爆炸圖
代碼:

from pyecharts.charts import Sunburst

def sunburst_base() -> Sunburst:
    data = [
        opts.SunburstItem(
            name="數據採集",
            children=[
                opts.SunburstItem(name="爬蟲", value=50),
                opts.SunburstItem(name="交換共享", value=20),
                opts.SunburstItem(name="第三方購買", value=20),
                opts.SunburstItem(name="其他方式", value=10)
                ]
            ),
        opts.SunburstItem(
            name="數據存儲",
            children=[
                opts.SunburstItem(name="關係型數據庫", value=60),
                opts.SunburstItem(name="鍵值存儲庫", value=10),
                opts.SunburstItem(name="列式存儲庫", value=10),
                opts.SunburstItem(name="面向文檔數據庫", value=10),
                opts.SunburstItem(name="圖數據庫", value=10)
                ]
            ),
        opts.SunburstItem(
            name="數據處理",
            children=[
                opts.SunburstItem(name="空值填充", value=20),
                opts.SunburstItem(name="異常值處理", value=20),
                opts.SunburstItem(name="新增特徵", value=20),
                opts.SunburstItem(name="熱編碼", value=20),
                opts.SunburstItem(name="標準化處理", value=20)
                ]
            ),
        opts.SunburstItem(
            name="數據統計分析",
            children=[
                opts.SunburstItem(name="描述性分析", value=30),
                opts.SunburstItem(name="多維度統計", value=40),
                opts.SunburstItem(name="對比統計", value=30)
                ]
            ),
        opts.SunburstItem(
            name="數據挖掘",
            children=[
                opts.SunburstItem(name="分類", value=30),
                opts.SunburstItem(name="預測", value=30),
                opts.SunburstItem(name="聚類", value=20),
                opts.SunburstItem(name="迴歸", value=20)
                ]
            ),
        opts.SunburstItem(
            name="數據展示",
            children=[
                opts.SunburstItem(name="大屏展示", value=20),
                opts.SunburstItem(name="系統頁面展示", value=40),
                opts.SunburstItem(name="報告展示", value=40),
                ]
            ),
        opts.SunburstItem(
            name="數據產品應用",
            children=[
                opts.SunburstItem(name="推薦系統", value=30),
                opts.SunburstItem(name="翻譯系統", value=20),
                opts.SunburstItem(name="自動駕駛", value=15),
                opts.SunburstItem(name="人臉識別", value=15),
                opts.SunburstItem(name="圖片識別文字", value=20)
                ]
            )
        ]
    c = (
        Sunburst(init_opts=opts.InitOpts(page_title="旭日圖-演示"))
        .add(
            "sunburst",
            data,
            radius=["20%", "85%"]
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="旭日圖", pos_left="center"))
        )
    return c
sunburst_base().render()

效果:

旭日圖

更多情況可以參考ecahrts官網或pyecharts官網,還推薦一個echarts社區,裏面有很多富有創意的可視化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章