首頁 > 軟體

pyecharts繪製各種資料視覺化圖表案例附效果+程式碼

2022-06-29 22:00:56

1、pyecharts繪製餅圖(顯示百分比)

# 匯入模組
from pyecharts import options as opts
from pyecharts.charts import Pie
#準備資料
label=['Mac口紅','Tom Ford口紅','聖羅蘭','紀梵希','花西子','迪奧','阿瑪尼','香奈兒']
values = [300,300,300,300,44,300,300,300]
# 自定義函數
def pie_base():
    c = (
        Pie()
        .add("",[list(z) for z in zip(label,values)])
        .set_global_opts(title_opts = opts.TitleOpts(title="口紅品牌分析"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c} {d}%"))   # 值得一提的是,{d}%為百分比
    )
    return c
# 呼叫自定義函數生成render.html
pie_base().render()

2、pyecharts繪製柱狀圖

#匯入模組
from pyecharts.globals import ThemeType
from pyecharts import options as opts
from pyecharts.charts import Bar
#準備資料
l1=['星期一','星期二','星期三','星期四','星期五','星期七','星期日']
l2=[100,200,300,400,500,400,300]
bar = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(l1)
    .add_yaxis("柱狀圖示籤", l2)
    .set_global_opts(title_opts=opts.TitleOpts(title="柱狀圖-基本範例", subtitle="副標題"))
)
# 生成render.html
bar.render()

3、pyecharts繪製折線圖

#匯入模組
import pyecharts.options as opts
from pyecharts.charts import Line
#準備資料
x=['星期一','星期二','星期三','星期四','星期五','星期七','星期日']
y1=[100,200,300,400,100,400,300]
y2=[200,300,200,100,200,300,400]
line=(
    Line()
    .add_xaxis(xaxis_data=x)
    .add_yaxis(series_name="y1線",y_axis=y1,symbol="arrow",is_symbol_show=True)
    .add_yaxis(series_name="y2線",y_axis=y2)
    .set_global_opts(title_opts=opts.TitleOpts(title="Line-雙摺線圖"))
)
#生成render.html
line.render()

4、pyecharts繪製柱形折線組合圖

from pyecharts import options as opts
from pyecharts.charts import Bar, Grid, Line
#x軸的值為列表,包含每個月份
x_data = ["{}月".format(i) for i in range(1, 13)]
bar = (
    Bar()
    .add_xaxis(x_data)
#第一個y軸的值、標籤、顏色
    .add_yaxis(
        "降雨量",
        [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 68.6, 22.0, 6.6, 4.3],
        yaxis_index=0,
        color="#5793f3",
    )

# #第二個y軸的值、標籤、顏色
#     .add_yaxis(
#         "蒸發量",
#         [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
#         yaxis_index=1,
#         color="#5793f3",
#     )

#右縱座標
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="降雨量",
            type_="value",
            min_=0,
            max_=250,
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        )
    )
#左縱座標
    .extend_axis(
        yaxis=opts.AxisOpts(
            type_="value",
            name="溫度",
            min_=0,
            max_=25,
            position="left",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#d14a61")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=1)
            ),
        )
    )
    .set_global_opts(
        yaxis_opts=opts.AxisOpts(
            name="降雨量",
            min_=0,
            max_=250,
            position="right",
            offset=0,
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color="#5793f3")
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
        ),
        title_opts=opts.TitleOpts(title="Grid-多 Y 軸範例"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
    )
)
line = (
    Line()
    .add_xaxis(x_data)
    .add_yaxis(
        "平均溫度",
        [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
        yaxis_index=2,
        color="#675bba",
        label_opts=opts.LabelOpts(is_show=False),
    )
)
bar.overlap(line)
grid = Grid()
grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="20%"), is_control_axis_index=True)
grid.render()

5、pyecharts繪製散點圖

# 匯入模組
from pyecharts import  options as opts
from pyecharts.charts import Scatter
 
# 設定銷售資料
week = ["週一","週二","週三","週四","週五","週六","週日"]
c =Scatter()     # 散點圖繪製
c.add_xaxis(week)
c.add_yaxis("商家A",[80,65,46,37,57,68,90])
c.set_global_opts(title_opts=opts.TitleOpts(title="一週的銷售額(萬元)"))    # 設定圖表標題
c.render()

6、pyecharts繪製玫瑰圖

from pyecharts import options as opts
from pyecharts.charts import Pie

label=['Mac口紅','Tom Ford口紅','聖羅蘭','紀梵希','花西子']
values = [100,200,250,350,400]
c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(label,values)],
        radius=["30%", "75%"],
        center=["50%", "50%"],
        rosetype="radius",
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="標題"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{c} {d}%"))   # 值得一提的是,{d}%為百分比
    .render("玫瑰圖.html")
)

7、pyecharts繪製詞雲圖

# 匯入WordCloud及設定模組
from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
 
# 新增詞頻資料
words = [
    ("Sam S Club", 10000),
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
    ("Lewis Hamilton", 555),
    ("KXAN", 550),
    ("Mary Ellen Mark", 462),
    ("Farrah Abraham", 366),
    ("Rita Ora", 360),
    ("Serena Williams", 282),
    ("NCAA baseball tournament", 273),
    ("Point Break", 265),
]
 
# WordCloud模組,鏈式呼叫設定,最終生成html檔案
c = (
    WordCloud()
    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)
    .set_global_opts(title_opts=opts.TitleOpts(title="詞雲圖"))
    .render("wordcloud_diamond.html")
)

8、pyecharts繪製雷達圖

from pyecharts import options as opts
from pyecharts.charts import Radar
v1 = [[8.5,50000,15000,8000,13000,5000]]
v2 = [[8.1,42000,13000,7000,15000,7000]]
def radar_base() ->Radar:
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name='KDA',max_=10),
                opts.RadarIndicatorItem(name='輸出', max_=60000),
                opts.RadarIndicatorItem(name='經濟', max_=20000),
                opts.RadarIndicatorItem(name='生存', max_=10000),
                opts.RadarIndicatorItem(name='推進', max_=20000),
                opts.RadarIndicatorItem(name='刷野', max_=10000),
            ]
        )
        .add(
            '射手',v1,
            color='blue',
            #通過顏色屬性 將其填充
            areastyle_opts=opts.AreaStyleOpts(
                opacity=0.5,
                color='blue'
            ),
        )
        .add(
            '法師',v2,
            color='red',
            areastyle_opts=opts.AreaStyleOpts(
                opacity=0.5,
                color='red'
            ),
        )
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title='英雄成長屬性對比'))
    )
    return c
radar_base().render("雷達圖.html")

9、pyecharts繪製散點圖

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker
c = (
    Scatter()
    .add_xaxis(Faker.choose())
    .add_yaxis(
        "商家A",
        [list(z) for z in zip(Faker.values(), Faker.choose())],
        label_opts=opts.LabelOpts(
            formatter=JsCode(
                "function(params){return params.value[1] +' : '+ params.value[2];}"
            )
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter散點圖-多維度資料"),
        tooltip_opts=opts.TooltipOpts(
            formatter=JsCode(
                "function (params) {return params.name + ' : ' + params.value[2];}"
            )
        ),
        visualmap_opts=opts.VisualMapOpts(
            type_="color", max_=150, min_=20, dimension=1
        ),
    )
    .render("散點圖.html")
)

10、pyecharts繪製巢狀餅圖

import pyecharts.options as opts
from pyecharts.charts import Pie
from pyecharts.globals import ThemeType
list1  = [300,55,400,110]
attr1 = ["學習", "運動","休息", "娛樂"]
list2  = [40,160,45,35,80,400,35,60]
attr2 = ["閱讀", "上課", "運動", "討論", "程式設計", "睡覺","聽音樂", "玩手機"]

inner_data_pair = [list(z) for z in zip(attr1, list1)]
outer_data_pair = [list(z) for z in zip(attr2, list2)]
(
    Pie(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add(
        series_name="時長佔比",
        data_pair=inner_data_pair,
        radius=[0, "30%"],
        label_opts=opts.LabelOpts(position="inner"),
    )
    .add(
        series_name="時長佔比",
        radius=["40%", "55%"],
        data_pair=outer_data_pair,
        label_opts=opts.LabelOpts(
            position="outside",
            formatter="{a|{a}}{abg|}n{hr|}n {b|{b}: }{c}  {per|{d}%}  ",
            background_color="#eee",
            border_color="#aaa",
            border_width=1,
            border_radius=4,
            rich={
                "a": {"color": "#999", "lineHeight": 22, "align": "center"},
                "abg": {
                    "backgroundColor": "#e3e3e3",
                    "width": "100%",
                    "align": "right",
                    "height": 22,
                    "borderRadius": [4, 4, 0, 0],
                },
                "hr": {
                    "borderColor": "#aaa",
                    "width": "100%",
                    "borderWidth": 0.5,
                    "height": 0,
                },
                "b": {"fontSize": 16, "lineHeight": 33},
                "per": {
                    "color": "#eee",
                    "backgroundColor": "#334455",
                    "padding": [2, 4],
                    "borderRadius": 2,
                },
            },
        ),
    )
    .set_global_opts(legend_opts=opts.LegendOpts(pos_left="left", orient="vertical"))
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"
        )
    )
    .render("巢狀餅圖.html")
)

11、pyecharts繪製中國地圖

#匯入模組
from pyecharts import options as opts
from pyecharts.charts import Map
import random
# 設定商家A所存在的相關省份,並設定初始數量為0
ultraman = [
['四川', 0],
['臺灣', 0],
['新疆', 0],
['江西', 0],
['河南', 0],
['遼寧', 0],
['青海', 0],
['福建', 0],
['西藏', 0]
]

# 設定商家B存在的相關省份,並設定初始數量為0
monster = [
['廣東', 0],
['北京', 0],
['上海', 0],
['臺灣', 0],
['湖南', 0],
['浙江', 0],
['甘肅', 0],
['黑龍江', 0],
['江蘇', 0]
]
def data_filling(array):
    ''' 
     作用:給陣列資料填充亂數
    '''
    for i in array:
        # 隨機生成1到1000的亂數
        i[1] = random.randint(1,1000)
data_filling(ultraman)
data_filling(monster)
def create_china_map():
    (
        Map()
        .add(
            series_name="商家A",
            data_pair=ultraman,
            maptype="china",
            # 是否預設選中,預設為True
            is_selected=True,
            # 是否啟用滑鼠滾輪縮放和拖動平移,預設為True
            is_roam=True,
            # 是否顯示圖形標記,預設為True
            is_map_symbol_show=False,
            # 圖元樣式設定
            itemstyle_opts={
                # 常規顯示
                "normal": {"areaColor": "white", "borderColor": "red"},
                # 強調顏色
                "emphasis": {"areaColor": "pink"}
            }
        )
        .add(
            series_name="商家B",
            data_pair=monster,
            maptype="china",
        )
        # 全域性設定項
        .set_global_opts(
            # 設定標題
            title_opts=opts.TitleOpts(title="中國地圖"),
            # 設定標準顯示
            visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False)
        )
        # 系列設定項
        .set_series_opts(
            # 標籤名稱顯示,預設為True
            label_opts=opts.LabelOpts(is_show=True, color="blue")
        )
        # 生成本地html檔案
        .render("中國地圖.html")
    )
    #呼叫自定義函數
create_china_map()

12、pyecharts繪製世界地圖

from pyecharts import options as opts
from pyecharts.charts import Map
import random
# 設定商家A所存在的相關國家,並設定初始數量為0
ultraman = [
['Russia', 0],
['China', 0],
['United States', 0],
['Australia', 0]
]
# 設定商家B存在的相關國家,並設定初始數量為0
monster = [
['India', 0],
['Canada', 0],
['France', 0],
['Brazil', 0]
]
def data_filling(array):
    for i in array:
        # 隨機生成1到1000的亂數
        i[1] = random.randint(1,1000)
        print(i)

data_filling(ultraman)
data_filling(monster)

def create_world_map():
    '''
     作用:生成世界地圖
    '''
    (   # 大小設定
        Map()
        .add(
            series_name="商家A",
            data_pair=ultraman,
            maptype="world",
        )
        .add(
            series_name="商家B",
            data_pair=monster,
            maptype="world",
        )
        # 全域性設定項
        .set_global_opts(
            # 設定標題
            title_opts=opts.TitleOpts(title="世界地圖"),
            # 設定標準顯示
            visualmap_opts=opts.VisualMapOpts(max_=1000, is_piecewise=False),
        )
        # 系列設定項
        .set_series_opts(
            # 標籤名稱顯示,預設為True
            label_opts=opts.LabelOpts(is_show=False, color="blue")
        )
        # 生成本地html檔案
        .render("世界地圖.html")
    )

create_world_map()

到此這篇關於pyecharts繪製各種資料視覺化圖表案例附效果+程式碼的文章就介紹到這了,更多相關pyecharts視覺化圖表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com