熱線電話:13121318867

登錄
首頁大數據時代Pyecharts繪制22種超實用精美圖表【CDA內容分享】
Pyecharts繪制22種超實用精美圖表【CDA內容分享】
2021-12-07
收藏

今天CDA為大家分享:Pyecharts繪制22種超實用精美圖表

作者:俊欣

來源:關于數據分析與可視化

今天來給大家分享一下Pyecharts模塊,說到它我們就不得不提Echarts,它是由百度開源的一款使用JavaScript實現的開源可視化庫,涵蓋了各種圖表、滿足各類業務需求,而pyecharts也就是Python與Echarts結合之后的產物,封裝了Echarts各類圖表的基本操作,然后通過渲染機制,輸出一個包含JS代碼的HTML文件。

Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

01、安裝與導入模塊

說到安裝模塊,我們可以這樣來進行,

pip install pyecharts

使用Pyecharts創建圖形的基本步驟是

1. 準備數據

2. 設計圖形的樣式、背景顏色

3. Pyecharts繪圖

4. 設計圖表的標題或者圖例等屬性

5. 導出至html

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


c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="這是主標題", subtitle="這是副標題"))
    .render("bar_base.html")
)

出來的結果是

Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

02、數據準備

import pandas as pd import numpy as np data = pd.DataFrame({'x':np.arange(1,101), 'y':["隨機生成的數字"]})


df = pd.read_excel("你的文件的路徑")

03、Pycharts還提供內置的數據集

Pyecharts內部還提供了一些數據集,主要包含類別數據、時間數據、顏色數據、地理數據、世界人口數據等等,通過choose()方法來隨機選擇使用哪個

def choose(self) -> list: return random.choice(
        [ self.clothes, self.drinks, self.phones, self.fruits, self.animal, self.dogs, self.week,
        ]
    )

04、圖形的樣式

說到圖形的樣式,大概都這么幾種

class _ThemeType:
    BUILTIN_THEMES = ["light", "dark", "white"]
    LIGHT = "light" DARK = "dark" WHITE = "white" CHALK: str = "chalk" ESSOS: str = "essos" INFOGRAPHIC: str = "infographic" MACARONS: str = "macarons" PURPLE_PASSION: str = "purple-passion" ROMA: str = "roma" ROMANTIC: str = "romantic" SHINE: str = "shine" VINTAGE: str = "vintage" WALDEN: str = "walden" WESTEROS: str = "westeros" WONDERLAND: str = "wonderland" HALLOWEEN: str = "halloween"

06、設置標題、副標題

設置標題以及副標題的代碼如下

set_global_opts(title_opts=opts.TitleOpts(title="這是主標題",
                                          subtitle="這是副標題"))

07、設置圖例與位置

legend_opts=opts.LegendOpts(type_="scroll", orient="vertical",
                            pos_top="15%",pos_left="7%")) # 圖裂的位置 label_opts=opts.LabelOpts(formatter=": {c}") # 結果的展現形式

08、導出結果

render("test.html")


# 如果是在jupyter notebook當中 render_notebook()

09、Pyecharts繪圖

堆疊柱狀圖

同個品類不同類目的柱子可以堆疊起來呈現,也就是堆疊的柱狀圖

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values(), stack="stack1")
    .add_yaxis("商家2", Faker.values(), stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆疊數據(全部)"))
    .render("bar_stack_1212.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

當然我們也可以部分堆疊,而不是上面這種全部的堆疊

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values(), stack="stack0")
    .add_yaxis("商家2", Faker.values(), stack="stack0")
    .add_yaxis("商家3", Faker.values())
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆疊數據(部分)"))
    .render("bar_stack_part.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

柱狀圖的橫坐標傾斜一丟丟

有時候橫坐標的標識字數較多,X軸上顯示全,我們可以將標識的字體稍微傾斜一些

c = (
    Bar()
    .add_xaxis(
        [ "名字相當長的X軸標簽1", "名字相當長的X軸標簽2", "名字相當長的X軸標簽3", "名字相當長的X軸標簽4", "名字相當長的X軸標簽5", "名字相當長的X軸標簽6", ]
    )
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=15)),
        title_opts=opts.TitleOpts(title="Bar-旋轉X軸標簽", subtitle="副標題"),
    )
    .render("test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

柱狀圖可以自動縮放的

通過底下的滑塊來實現橫坐標的縮放、范圍的調整等等

c = (
    Bar()
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("商家1", Faker.days_values)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-數據縮放(拖快-水平)"),
        datazoom_opts=opts.DataZoomOpts(),
    )
    .render("bar_datazoom_slider.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

當然滑塊也可以放在垂直的右側

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("商家1", Faker.days_values, color=Faker.rand_color())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-DataZoom(滑塊-垂直)"),
        datazoom_opts=opts.DataZoomOpts(orient="vertical"),
    )
    .render("bar_datazoom_slider_vertical.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

我們也可以通過拖動里面的柱子來實現數據縮放、范圍的改變

c = (
    Bar()
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("商家1", Faker.days_values)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-DataZoom(內置+外置)"),
        datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")],
    )
    .render("bar_datazoom_both.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

柱狀圖給X軸Y軸命名的

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-XY 軸名稱"),
        yaxis_opts=opts.AxisOpts(name="這個是 Y 軸"),
        xaxis_opts=opts.AxisOpts(name="這個是 X 軸"),
    )
    .render("bar_name_xyaxis.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

柱狀圖柱間距離不相同的

柱狀圖當中,不同柱子之間的距離也可以不是相同的

c = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.WHITE))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values(), gap="0%")
    .add_yaxis("商家2", Faker.values(), gap="0%")
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-柱間距離不同"))
    .render("bar_different_series_gap.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

柱狀圖水平狀態的

還有水平方向的柱狀圖

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .reversal_axis()
    .set_series_opts(label_opts=opts.LabelOpts(position="right"))
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-水平方向"))
    .render("bar_reversal_axis.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

直方圖

c = (
    Bar()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values(), category_gap=0, color=Faker.rand_color())
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方圖"))
    .render("bar_histogram.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

箱型圖

箱型圖更加有利于我們來觀察數據的內在分布

from pyecharts.charts import Boxplot v1 = [ [850, 740, 950, 1090, 930, 850, 950, 980, 1000, 880, 1000, 980], [980, 940, 960, 940, 900, 800, 850, 880, 950, 840, 830, 800], ] v2 = [ [890, 820, 820, 820, 800, 770, 760, 760, 750, 760, 950, 920], [900, 840, 800, 810, 760, 810, 790, 850, 820, 850, 870, 880], ] c = Boxplot() c.add_xaxis(["A", "B"]) c.add_yaxis("類目1", c.prepare_data(v1)) c.add_yaxis("類目2", c.prepare_data(v2)) c.set_global_opts(title_opts=opts.TitleOpts(title="箱型圖-基本示例")) c.render("boxplot_test.html")
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

日歷圖

日歷圖具體指按照日歷的布局,用顏色展現每一天的數據,從而比較直觀地看到全年的數據情況,例如展示超市全年的銷售額,從而看出具體某個月份或者某個星期的銷售額比較低

c = ( Calendar(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC)) .add("", data, calendar_opts=opts.CalendarOpts(range_="2020")) .set_global_opts( title_opts=opts.TitleOpts(title="日歷圖-2020年超市的銷售額"), visualmap_opts=opts.VisualMapOpts( max_=250000, min_=10000, orient="horizontal", is_piecewise=True, pos_top="230px", pos_left="100px", ), ) .render("calendar_test.html") )
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

K線圖

c = (
    Kline(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))
    .add_xaxis(["2020/7/{}".format(i + 1) for i in range(31)])
    .add_yaxis("kline", data)
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(is_scale=True),
        xaxis_opts=opts.AxisOpts(is_scale=True),
        title_opts=opts.TitleOpts(title="K線圖-基本示例"),
    )
    .render("kline_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

漏斗圖

from pyecharts.charts import Funnel c = ( Funnel()
    .add("類目", [list(z) for z in zip(Faker.choose(), Faker.values())])
    .set_global_opts(title_opts=opts.TitleOpts(title="漏斗圖-基本示例"))
    .render("funnel_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

折線圖

c = (
    Line()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .add_yaxis("商家2", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="折線圖-基本示例"))
    .render("line_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

水球圖

水球圖通常來顯示指標的完成程度

from pyecharts.charts import Liquid c = ( Liquid()
    .add("lq", [0.55, 0.75])
    .set_global_opts(title_opts=opts.TitleOpts(title="Liquid-基本示例"))
    .render("liquid_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

詞云圖

c = (
    WordCloud()
    .add(series_name="詞云圖實例", data_pair=data, word_size_range=[5, 100])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="詞云圖實例", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
    .render("basic_wordcloud.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

餅圖

c = ( Pie()
    .add("類目", [list(z) for z in zip(Faker.choose(), Faker.values())])
    .set_global_opts(title_opts=opts.TitleOpts(title="餅圖-基本示例"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}"))
    .render("pie_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

儀表盤圖

儀表盤的繪制也可以用來展示指標的完成程度

from pyecharts.charts import Gauge c = ( Gauge()
    .add("", [("完成率", 70)])
    .set_global_opts(title_opts=opts.TitleOpts(title="儀表盤-基本示例"))
    .render("gauge_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

地圖

c = ( Map()
    .add("商家1", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    .set_global_opts(title_opts=opts.TitleOpts(title="地圖-基本示例"))
    .render("map_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

漣漪散點圖

c = (
    EffectScatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("商家1", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="漣漪散點圖-基本示例"))
    .render("effectscatter_test.html")
)
Py<a href='/map/echarts/' style='color:#000;font-size:inherit;'>echarts</a>繪制22種超實用精美圖表

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢