五类24例pyecharts图表分享(附代码)

文章目录

  • 01 Pie Chart
    • 基础饼图
    • 玫瑰图
    • 普通圆环图
    • 富文本饼图
  • 02 Bar
    • 堆积柱形图
    • 自定义标签旋转
    • 标注特殊值
    • 加入JsCode的渐变色配置
    • Bar - Horizontal
    • Bar - 3D
  • 03 Line
    • 基础折线图
    • 面积图
    • 同比展示
  • 04 Scatter
    • Effect Scatter
    • Scatter - with size
  • 05 功能图表
    • Liquid - 水球图
    • Graph - 关系图
    • Calendar - 日历图
    • Funnel - 漏斗图
    • Gauge - 仪表盘
    • Tree - 树形图表
    • WordCloud - 词云图
    • Polar - 极坐标图
    • Radar - 雷达图
  • 00 其他说明

01 Pie Chart

基础饼图

五类24例pyecharts图表分享(附代码)_第1张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 700]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1])

p = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.WALDEN,
                                page_title="Pie- Base"))
    .add(
        series_name="访问来源",
        data_pair=data_pair,
        radius="50%",
        center=["50%", "50%"],
        # is_clockwise=True,  # 扇区排布方向
        label_opts=opts.LabelOpts(is_show=True, position="center"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Customized Pie",
            pos_left="center",
            pos_top="20",
        ),
        legend_opts=opts.LegendOpts(is_show=False)
    )
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item", formatter="{a} 
{b}: {c} ({d}%)"
), label_opts=opts.LabelOpts(color="rgba(0, 0, 0, 0.5"), ) .render("Pie01.html") ) os.system("Pie01.html")

玫瑰图

五类24例pyecharts图表分享(附代码)_第2张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 700]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1])

p = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC,
                                page_title="Pie- RoseType"))
    .add(
        series_name="访问来源",
        data_pair=data_pair,
        radius="50%",  # 饼图
        center=["50%", "50%"],

        # 是否展示成南丁格尔图,通过半径区分数据大小
        rosetype="radius",  # 通过半径区分数据大小
        # rosetype="area",  # 通过面积区分数据大小

        is_clockwise=True,  # 扇区排布方向
        label_opts=opts.LabelOpts(is_show=True, position="center"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Pie - Rosetype",
            pos_left="center",
            pos_top="20",
        ),
        legend_opts=opts.LegendOpts(is_show=False)
    )
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item", formatter="{a} 
{b}: {c} ({d}%)"
), label_opts=opts.LabelOpts(color="rgba(0, 0, 0, 0.5"), ) .render("Pie02.html") ) os.system("Pie02.html")

普通圆环图

五类24例pyecharts图表分享(附代码)_第3张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 274, 235, 700]
data_pair = [list(z) for z in zip(x_data, y_data)]
data_pair.sort(key=lambda x: x[1])

p = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.WALDEN,
                                page_title="Pie- Ring"))
    .add(
        series_name="访问来源",
        data_pair=data_pair,
        radius=["35%", "75%"],  # 圆环图
        center=["50%", "50%"],
        is_clockwise=True,  # 扇区排布方向
        label_opts=opts.LabelOpts(is_show=True, position="center"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="Pie - Ring",
            pos_left="center",
            pos_top="20",
        ),
        legend_opts=opts.LegendOpts(is_show=False)
    )
    .set_series_opts(
        tooltip_opts=opts.TooltipOpts(
            trigger="item", formatter="{a} 
{b}: {c} ({d}%)"
), label_opts=opts.LabelOpts(color="rgba(0, 0, 0, 0.5", formatter="{b}: {c} ({d}%)", font_size=14, font_weight="bold", font_family="Courier New", ), ) .render("Pie03.html") ) os.system("Pie03.html")

富文本饼图

五类24例pyecharts图表分享(附代码)_第4张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

inner_x_data = ["直达", "营销广告", "搜索引擎"]
inner_y_data = [335, 679, 1548]

outer_x_data = ["直达", "营销广告", "搜索引擎", "邮件营销", "联盟广告", "视频广告", "百度", "谷歌", "必应", "其他"]
outer_y_data = [335, 310, 234, 135, 1048, 251, 147, 102]

p = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.WALDEN,
                                page_title="Nested Pie with Rich Text"))
    .add(
        series_name="访问来源",
        data_pair=[list(z) for z in zip(inner_x_data, inner_y_data)],
        radius=[0, "30%"],
        label_opts=opts.LabelOpts(position="inner"),
    )
    .add(
        series_name="访问来源2",
        data_pair=[list(z) for z in zip(outer_x_data, outer_y_data)],
        radius=["40%", "60%"],
        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": 14, "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} 
{b}: {c} ({d}%)"
) ) .render("Pie04.html") ) os.system("Pie04.html")

02 Bar

基础图形略。

堆积柱形图

五类24例pyecharts图表分享(附代码)_第5张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


b = (
    Bar(init_opts=opts.InitOpts(page_title="Bar - Stack", theme=ThemeType.ESSOS))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A-1", Faker.values(), stack="stack01")
    .add_yaxis("商家A-2", Faker.values(), stack="stack01")
    .add_yaxis("商家B", Faker.values())
    # .add_yaxis("商家B-1", Faker.values(), stack="stack02")
    # .add_yaxis("商家B-2", Faker.values(), stack="stack02")
    # .add_yaxis("商家B-3", Faker.values(), stack="stack02")
    .set_series_opts(label_opts=opts.LabelOpts(position="insideTop", font_family="Courier New"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-Stack"),
        yaxis_opts=opts.AxisOpts(name="销售额",
                                 splitline_opts=opts.SplitLineOpts(
                                    is_show=True,
                                    linestyle_opts=opts.LineStyleOpts(
                                        type_="dashed",
                                        color="gray",
                                    )),
                                 ),
        xaxis_opts=opts.AxisOpts(name="细分市场", axislabel_opts=opts.LabelOpts(rotate=-20)),
    )
    .render("Bar02.html")
)
os.system("Bar02.html")

自定义标签旋转

五类24例pyecharts图表分享(附代码)_第6张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
import random

b = (
    Bar(init_opts=opts.InitOpts(page_title="Bar-01", theme=ThemeType.WESTEROS))
    .add_xaxis([
        "名字很长很长很长的标签1",
        "名字很长很长很长的标签2",
        "名字很长很长很长的标签3",
        "名字很长很长很长的标签4",
        "名字很长很长很长的标签5",
        "名字很长很长很长的标签6",
    ])
    .add_yaxis("商家A", [random.randint(1, 100) for i in range(6)])
    .add_yaxis("商家B", [random.randint(1, 100) for i in range(6)])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-20)),  # 顺时针旋转20°
        title_opts=opts.TitleOpts(title="Bar-旋转标签", subtitle="解决标签名字过长的问题")
    )
    .render("Bar01.html")
)
os.system("Bar01.html")

标注特殊值

五类24例pyecharts图表分享(附代码)_第7张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

b = (
    Bar(init_opts=opts.InitOpts(page_title="Bar with MarkPoint", theme=ThemeType.VINTAGE))
    .add_xaxis(Faker.choose())
    .add_yaxis("Series A", Faker.values())
    .add_yaxis("Series B", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar - MarkPoint"),
        legend_opts=opts.LegendOpts(pos_left="right", pos_top="top", orient="vertical"),
    )
    .set_series_opts(
        label_opts=opts.LabelOpts(is_show=False),  # 关闭所有值标签的显示
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="最大值"),
                opts.MarkPointItem(type_="min", name="最小值"),
            ]
        ),
        markline_opts=opts.MarkPointOpts(
            data=[
                opts.MarkLineItem(type_="average", name="平均值"),
                opts.MarkLineItem(type_="max", name="最大值"),
            ],
            label_opts=opts.LabelOpts(font_size=12, formatter="{b}{c}s")
        )
    )
    .render("Bar03.html")
)
os.system("Bar03.html")

加入JsCode的渐变色配置

五类24例pyecharts图表分享(附代码)_第8张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


# Bar - 渐变效果
b = (
    Bar(init_opts=opts.InitOpts(page_title="Bar - Bar_border_radius"))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values(), category_gap="60%")
    .set_series_opts(
        itemstyle_opts={
            "normal": {
                "color": JsCode(
                    """new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: 'rgba(0, 194, 255, 1)'
                }, {
                    offset: 1,
                    color: 'rgba(0, 77, 167, 1)'
                }], false)"""
                ),
                "barBorderRadius": [30, 30, 30, 30],
                "shadowColor": "rgb(0, 160, 221)",
            }
        }
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-渐变圆柱"))
    .render("Bar04.html")
)
os.system("Bar04.html")

Bar - Horizontal

五类24例pyecharts图表分享(附代码)_第9张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


b = (
    Bar(init_opts=opts.InitOpts(page_title="Horizontal Bar",
                                theme=ThemeType.WESTEROS))
    .add_xaxis(Faker.choose())
    .add_yaxis("SeriesA", Faker.values())
    .add_yaxis("SeriesB", Faker.values())
    .reversal_axis()
    .set_series_opts(label_opts=opts.LabelOpts(position="right"),  # 记得对应地将数据标签调整至右侧
                     itemstyle_opts={
                         "normal": {
                            "barBorderRadius": [0, 10, 10, 0],  # 注意圆角分别对应[左上,右上,右下,左下]
                            "shadowColor": "rgb(0, 160, 221)",
                         }
                     })
    .set_global_opts(title_opts=opts.TitleOpts(title="Horizontal"),
                     # 注意这里反转后需要设置的是反转后的y轴(即x轴),而不是作为值代入的y
                     xaxis_opts=opts.AxisOpts(
                         type_="value",
                         name="value",
                         position="right",
                         offset=80,
                         axisline_opts=opts.AxisLineOpts(
                             linestyle_opts=opts.LineStyleOpts(color='#5793f3')
                         ),
                         axislabel_opts=opts.LabelOpts(formatter="{value} 只"),
                     ),
                     tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"))
    .render("Bar05.html")
)
os.system("Bar05.html")

Bar - 3D

五类24例pyecharts图表分享(附代码)_第10张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


data = [(i, j, random.randint(0, 12)) for i in range(6) for j in range(24)]
b = (
    Bar3D(init_opts=opts.InitOpts(page_title="3D Bar", theme=ThemeType.WESTEROS))
    .add(
        "",
        [[d[1], d[0], d[2]] for d in data],
        xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_="category"),
        yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_="category"),
        zaxis3d_opts=opts.Axis3DOpts(type_="value"),
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=14)
    )
    .render("Bar3D.html")
)
os.system("Bar3D.html")

03 Line

折线图调整要点:

  • 是否堆叠
  • 曲线or折线:is_smooth=False/True
  • 是否连接空数据:is_connect_nones=False/True
  • 是否填色(Area)

基础折线图

五类24例pyecharts图表分享(附代码)_第11张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker

# Line - Base
x = Faker.choose()
y = Faker.values()
y_2 = Faker.values()
y[3], y[5] = None, None
line = (
    Line(init_opts=opts.InitOpts(page_title="Line Demo",
                                 theme=ThemeType.PURPLE_PASSION))
    .add_xaxis(x)
    .add_yaxis("Series A", y, is_connect_nones=True,
               markpoint_opts=opts.MarkPointOpts(
                   data=[
                       opts.MarkPointItem(name="Point 1", coord=[x[2], y[2]], value=y[2]),
                       opts.MarkPointItem(name="Point 2", coord=[x[6], y[6]], value=y[6]),
                       opts.MarkPointItem(name="max", type_="max"),
                   ]
               ),
               label_opts=opts.LabelOpts(is_show=False),
               )
    .add_yaxis("Series B", y_2,
               symbol="emptyCircle",  # 设置标记点为空心圆
               is_smooth=True,  # 设置为平滑曲线
               )
    .set_global_opts(title_opts=opts.TitleOpts(title="Line - Connect Null"))
    .render("line01.html")
)
os.system("line01.html")

面积图

五类24例pyecharts图表分享(附代码)_第12张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


# Line - Area
x = Faker.choose()
a = Faker.values()
b = Faker.values()
c = Faker.values()

area = (
    Line(init_opts=opts.InitOpts(page_title="Line Area", theme=ThemeType.ESSOS))
    .add_xaxis(x)
    .add_yaxis("Series A", a, stack="level 1")
    # .add_yaxis("Series B", b, stack="level 1")  # stack用同样的名字,则转化为堆积面积图
    .add_yaxis("Series B", b, stack="level 2")
    .set_series_opts(
        areastyle_opts=opts.AreaStyleOpts(opacity=0.35),  # 设置填色为面积图
        label_opts=opts.LabelOpts(formatter="{c}"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Area Chart"),
        xaxis_opts=opts.AxisOpts(
            axistick_opts=opts.AxisTickOpts(is_align_with_label=True),  # 设置x轴标识
            is_scale=False,
            boundary_gap=False,  # 将x轴最左刻度对齐y轴
        )
    )
    .render("Line02.html")
)
os.system("Line02.html")

同比展示

五类24例pyecharts图表分享(附代码)_第13张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


# Line - 多x轴展示同比情况
x_1 = ["2020-" + str(i + 1) for i in range(12)]
x_2 = ["2021-" + str(i + 1) for i in range(12)]
y_1 = [round((random.random() + 0.2) * 10, 2) for i in range(12)]
y_2 = [round((random.random() + 0.25) * 10, 2) for i in range(12)]

line = (
    Line(init_opts=opts.InitOpts(page_title="Multiple x_axis", theme=ThemeType.WESTEROS))
    .add_xaxis(xaxis_data=x_1)
    .extend_axis(
        xaxis_data=x_2,
        xaxis=opts.AxisOpts(
            type_="category",
            axistick_opts=opts.AxisTickOpts(is_align_with_label=True),
            axisline_opts=opts.AxisLineOpts(
                is_on_zero=False,
                linestyle_opts=opts.LineStyleOpts(color="#6e9ef1")
            ),
        ),
    )
    .add_yaxis(
        series_name="2020降水量",
        is_smooth=True,
        symbol="emptyCircle",
        y_axis=y_1,
        linestyle_opts=opts.LineStyleOpts(width=2),
    )
    .add_yaxis(
        series_name="2021降水量",
        is_smooth=True,
        symbol="emptyCircle",
        y_axis=y_2,
        linestyle_opts=opts.LineStyleOpts(width=2),
    )
    .set_global_opts(
        legend_opts=opts.LegendOpts(),
        tooltip_opts=opts.TooltipOpts(axis_pointer_type="cross"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            splitline_opts=opts.SplitLineOpts(
                is_show=True, linestyle_opts=opts.LineStyleOpts(opacity=0.8)
            ),
        ),
    )
    .set_series_opts(
        # areastyle_opts=opts.AreaStyleOpts(opacity=0.35),  # 设置填色为面积图
        label_opts=opts.LabelOpts(is_show=False),
    )
    .render("Line03.html")
)
os.system("Line03.html")

04 Scatter

Effect Scatter

五类24例pyecharts图表分享(附代码)_第14张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


# Scatter - EffectScatter plus SplitLine
s = (
    EffectScatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("", Faker.values())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Effect Scatter"),
        xaxis_opts=opts.AxisOpts(
            splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(type_="dashed"))
        ),
        yaxis_opts=opts.AxisOpts(
            splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(type_="dashed"))
        ),
        )
    .render("Scatter01.html")
)
os.system("Scatter01.html")

Scatter - with size

五类24例pyecharts图表分享(附代码)_第15张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *
from pyecharts.faker import Faker


s = (
    Scatter(init_opts=opts.InitOpts(page_title="Scatter Chart",
                                    theme=ThemeType.WESTEROS))
    .add_xaxis(Faker.choose())
    .add_yaxis("Series A", Faker.values())
    .add_yaxis("Series B", Faker.values())
    .set_series_opts(label_opts=opts.LabelOpts(position="inside"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Scatter with Size"),
        visualmap_opts=opts.VisualMapOpts(type_="size", is_show=False, max_=150, min_=20),
        xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
        yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)),
    )
    .render("Scatter02.html")
)

os.system("Scatter02.html")

05 功能图表

Liquid - 水球图

五类24例pyecharts图表分享(附代码)_第16张图片

import os

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


liq = (
    Liquid(init_opts=opts.InitOpts(page_title="Liquid Test 01", theme=ThemeType.WESTEROS))
    .add(series_name="Liquid",
         data=[0.35, 0.65],
         # 水球外形,包括"circle","rect","roundRect","triangle","diamond","pin","arrow"
         shape="roundRect",
         # color=,
         # background_color=,
         is_animation=True,  # 是否显示波浪动画
         is_outline_show=False,  # 是否显示边框宽度
         # outline_border_distance: type.Numeric = 8,  # 外沿边框宽度
         # outline_border_opts: type.ItemStyle = None,  # 外沿样式
         label_opts=opts.LabelOpts(
             font_size=40,
             font_family="Courier New",
             formatter=JsCode(
                 """function (param) {
                    return (Math.floor(param.value * 10000) / 100) + '%';
                 }"""
             ),
             position="inside",
         ),
         # tooltip_opts=
         )
    .set_global_opts(title_opts=opts.TitleOpts(title="Liquid - with precision"))
    .render("Liquid02.html")
)
os.system("Liquid02.html")

Graph - 关系图

五类24例pyecharts图表分享(附代码)_第17张图片

import os
import random
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


# Graph: 自定义结点
nodes = []
symbols = ["circle", "rect", "roundRect", "triangle", "diamond", "pin", "arrow", "none"]
for i in range(1, 10):
    name = "结点%s" % i
    nodes.append(opts.GraphNode(name=name,
                                symbol_size=random.randint(1, 5) * 5,
                                symbol=symbols[random.randint(1, len(symbols) - 1)]))
links = []
for i in nodes:
    for j in nodes:
        links.append(opts.GraphLink(source=i.get("name"),
                                    target=j.get("name"),
                                    value=random.randint(1, len(nodes))
                                    )
                     )
        # links.append({"source": i.get("name"), "target": j.get("name")})
        # links.append({"source": i.get("name"), "target": j.get("name")})
c = (
    Graph(init_opts=opts.InitOpts(theme=ThemeType.MACARONS,
                                  page_title="Pyecharts-Gallery-Graph-01"))
    .add("", nodes, links, repulsion=8000)
    .set_global_opts(title_opts=opts.TitleOpts(title="Graph-Optional"))
    .render("Graph02.html")
)
os.system("Graph02.html")

Calendar - 日历图

五类24例pyecharts图表分享(附代码)_第18张图片

import datetime
import random
import os

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


begin = datetime.date(2020, 1, 1)
end = datetime.date(2020, 12, 31)
data = [
    [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
    for i in range((end - begin).days + 1)
]

c = (
    Calendar(init_opts=opts.InitOpts(page_title="Pyecharts-Gallery-Calendar-01"))
    .add(
        "",
        data,
        calendar_opts=opts.CalendarOpts(
            range_="2020",
            daylabel_opts=opts.CalendarDayLabelOpts(name_map="cn"),
            monthlabel_opts=opts.CalendarMonthLabelOpts(name_map="cn"),
        ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Calendar-2020微信步数情况(中文Label)"),
        visualmap_opts=opts.VisualMapOpts(
            max_=20000,
            min_=500,
            orient="horizontal",
            is_piecewise=True,
            pos_top="230px",
            pos_left="100px",
        ),
    )
    .render("calendar_label_setting.html")
)
os.system("calendar_label_setting.html")

Funnel - 漏斗图

五类24例pyecharts图表分享(附代码)_第19张图片

import os

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


x_data = ["View", "Click", "Visit", "Chat", "Order"]
y_data = [100, 90, 45, 20, 5]
data = [list(z) for z in zip(x_data, y_data)]

funnel = (
    Funnel(init_opts=opts.InitOpts(width="800px", height="600px",
                                   theme=ThemeType.WESTEROS,
                                   page_title="Pyecharts-Gallery-Funnel-01"))
    .add(
        series_name="",
        data_pair=data,
        gap=2,
        tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} 
{b} : {c}%"
), label_opts=opts.LabelOpts(is_show=True, position="inside"), itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1), ) .set_global_opts(title_opts=opts.TitleOpts(title="Funnel")) .render("funnel01.html") ) os.system("funnel01.html")

Gauge - 仪表盘

五类24例pyecharts图表分享(附代码)_第20张图片

import os

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


c = (
    Gauge(init_opts=opts.InitOpts(theme=ThemeType.MACARONS,
                                  page_title="Pyecharts-Gallery-Gauge-01"))
    .add(
        series_name="Group A",
        data_pair=[["Completed", 62.5]],
        split_number=5,  # 仪表盘平均分割段数
        tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{a}
{b} : {c}%"
), title_label_opts=opts.GaugeTitleOpts(is_show=False), # 隐藏系列名称,否则会重叠 detail_label_opts=opts.GaugeDetailOpts( formatter="{value}%", font_family="Courier New", font_size=25, ) ) .set_global_opts( title_opts=opts.TitleOpts(title="Gauge"), legend_opts=opts.LegendOpts(is_show=False), ) .render("Gauge01.html") ) os.system("Gauge01.html")

Tree - 树形图表

五类24例pyecharts图表分享(附代码)_第21张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *


# Tree - Basic
data = [
    {
        "children": [
            {"name": "B"},
            {
                "children": [
                    {"children": [{"name": "I"}],
                     "name": "E"},
                    {"name": "F"}
                ],
                "name": "C",
            },
            {
                "children": [
                    {"children": [{"name": "J"}, {"name": "K"}],
                     "name": "H"},
                ],
                "name": "D",
            },
        ],
        "name": "A",
    }
]
t = (
    Tree()
    .add("", data)
    .set_global_opts(title_opts=opts.TitleOpts(title="Basic Tree"))
    .render("Tree01.html")
)
os.system("Tree01.html")

WordCloud - 词云图

五类24例pyecharts图表分享(附代码)_第22张图片

from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

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),
]
c = (
    WordCloud(init_opts=opts.InitOpts(page_title="Word Cloud",
                                      theme=ThemeType.ESSOS))
    .add(
        series_name="",
        data_pair=words,
        word_size_range=[20, 100],
        shape=SymbolType.TRIANGLE,
        textstyle_opts=opts.TextStyleOpts(font_family="Courier New")
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud"))
    .render("WordCloud01.html")
)
os.system("WordCloud01.html")

Polar - 极坐标图

五类24例pyecharts图表分享(附代码)_第23张图片

import random
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

weekday = ["Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun"]
work_done_a = [random.randint(1, 10) for i in range(7)]
work_done_b = [random.randint(1, 10) for i in range(7)]
p = (
    Polar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS,
                                  page_title="Polar-RadiusAxis"))
    .add_schema(
        radiusaxis_opts=opts.RadiusAxisOpts(data=weekday, type_="category"),
        angleaxis_opts=opts.AngleAxisOpts(is_clockwise=True, max_=10),
    )
    .add(
        series_name="Employee A",
        data=work_done_a,
        type_="bar",
    )
    .add(
        series_name="Employee B",
        data=work_done_b,
        type_="bar",
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="Polar-RadiusAxis"))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    .render("Polar01.html")
)
os.system("Polar01.html")

Radar - 雷达图

五类24例pyecharts图表分享(附代码)_第24张图片

import random
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.globals import *

v1 = [[random.randint(1, i + 2) * 100 for i in range(6)]]
v2 = [[random.randint(1, i + 2) * 100 for i in range(6)]]
r = (
    Radar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE,
                                  page_title="Radar Basic"))
    .add_schema(
        schema=[
            opts.RadarIndicatorItem(name="销售", max_=200),
            opts.RadarIndicatorItem(name="管理", max_=300),
            opts.RadarIndicatorItem(name="IT", max_=400),
            opts.RadarIndicatorItem(name="客服", max_=500),
            opts.RadarIndicatorItem(name="研发", max_=600),
            opts.RadarIndicatorItem(name="市场", max_=700),
        ],
        shape="polygon",  # 可选"polygon"或"circle"
    )
    .add(series_name="预算分配",
         data=v1,
         symbol="circle",
         color="#000",
         linestyle_opts=opts.LineStyleOpts(width=2))
    .add(series_name="实际开销",
         data=v2,
         symbol="circle",
         linestyle_opts=opts.LineStyleOpts(width=2))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        # legend_opts=opts.LegendOpts(selected_mode="single"),  # 单选模式
        title_opts=opts.TitleOpts(title="Radar Basic"),
    )
    .render("\Radar01.html")
)
os.system("\Radar01.html")

00 其他说明

关于标签内容格式器(formatter)的说明:
标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。

  1. 字符串模板
    模板变量有 {a}, {b},{c},{d},{e},分别表示系列名,数据名,数据值等。
    在 trigger 为 ‘axis’ 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。
    不同图表类型下的 {a},{b},{c},{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:
    • 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)
    • 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)
    • 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)
    • 饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
      示例:formatter: ‘{b}: {@score}’
  2. 回调函数,回调函数格式:(params: Object|Array) => string
    参数 params 是 formatter 需要的单个数据集。格式如下:
{
    componentType: 'series',
    // 系列类型
    seriesType: string,
    // 系列在传入的 option.series 中的 index
    seriesIndex: number,
    // 系列名称
    seriesName: string,
    // 数据名,类目名
    name: string,
    // 数据在传入的 data 数组中的 index
    dataIndex: number,
    // 传入的原始数据项
    data: Object,
    // 传入的数据值
    value: number|Array,
    // 数据图形的颜色
    color: string,
}

你可能感兴趣的:(python,可视化)