发现宝藏之pyecharts

鉴于之前写的pyecharts,写的很那啥,我今天发现了一个讲述pyecharts非常详细的文章,大有启发!

直角坐标系图表

第一导入pyecharts

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

直方图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


bar = (Bar()
       .add_xaxis(x_data)
       .add_yaxis('', y_data)
      )

bar.render_notebook()


 

折线图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

line = (Line()
       .add_xaxis(x_data)
       .add_yaxis('', y_data)
      )

line.render_notebook()

 

箱形图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [[random.randint(100, 200) for i in range(10)] for item in x_data]

Box = Boxplot()
Box.add_xaxis(x_data)
Box.add_yaxis("", Box.prepare_data(y_data))
Box.render_notebook()

 

散点图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

scatter = (Scatter()
           .add_xaxis(x_data)
           .add_yaxis('', y_data)
           )

scatter.render_notebook()

 

带涟漪效果散点图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

effectScatter = (EffectScatter()
           .add_xaxis(x_data)
           .add_yaxis('', y_data)
           )

effectScatter.render_notebook()

 

k线图

# 虚假数据
date_list = ["2020/4/{}".format(i + 1) for i in range(30)]
y_data = [
    [2320.26, 2320.26, 2287.3, 2362.94],
    [2300, 2291.3, 2288.26, 2308.38],
    [2295.35, 2346.5, 2295.35, 2345.92],
    [2347.22, 2358.98, 2337.35, 2363.8],
    [2360.75, 2382.48, 2347.89, 2383.76],
    [2383.43, 2385.42, 2371.23, 2391.82],
    [2377.41, 2419.02, 2369.57, 2421.15],
    [2425.92, 2428.15, 2417.58, 2440.38],
    [2411, 2433.13, 2403.3, 2437.42],
    [2432.68, 2334.48, 2427.7, 2441.73],
    [2430.69, 2418.53, 2394.22, 2433.89],
    [2416.62, 2432.4, 2414.4, 2443.03],
    [2441.91, 2421.56, 2418.43, 2444.8],
    [2420.26, 2382.91, 2373.53, 2427.07],
    [2383.49, 2397.18, 2370.61, 2397.94],
    [2378.82, 2325.95, 2309.17, 2378.82],
    [2322.94, 2314.16, 2308.76, 2330.88],
    [2320.62, 2325.82, 2315.01, 2338.78],
    [2313.74, 2293.34, 2289.89, 2340.71],
    [2297.77, 2313.22, 2292.03, 2324.63],
    [2322.32, 2365.59, 2308.92, 2366.16],
    [2364.54, 2359.51, 2330.86, 2369.65],
    [2332.08, 2273.4, 2259.25, 2333.54],
    [2274.81, 2326.31, 2270.1, 2328.14],
    [2333.61, 2347.18, 2321.6, 2351.44],
    [2340.44, 2324.29, 2304.27, 2352.02],
    [2326.42, 2318.61, 2314.59, 2333.67],
    [2314.68, 2310.59, 2296.58, 2320.96],
    [2309.16, 2286.6, 2264.83, 2333.29],
    [2282.17, 2263.97, 2253.25, 2286.33],
]

kline = (Kline()
         .add_xaxis(date_list)
         .add_yaxis('', y_data)
         )

kline.render_notebook()

 

热力图

# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        )

heat.render_notebook()

 

象型图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

pictorialBar = (PictorialBar()
                .add_xaxis(x_data)
                .add_yaxis('', y_data)
                )

pictorialBar.render_notebook()

 

层叠图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_bar = [123, 153, 89, 107, 98, 23]
y_data_line = [153, 107, 23, 89, 123, 107]


bar = (Bar()
       .add_xaxis(x_data)
       .add_yaxis('', y_data_bar)
       )

line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data_line)
        )

overlap = bar.overlap(line)
overlap.render_notebook()

 

地理图表

GEO-地理坐标系

# 虚假数据
province = [
    '广东',
    '湖北',
    '湖南',
    '四川',
    '重庆',
    '黑龙江',
    '浙江',
    '山西',
    '河北',
    '安徽',
    '河南',
    '山东',
    '西藏']
data = [(i, random.randint(50, 150)) for i in province]

geo = (
    Geo()
    .add_schema(maptype="china")
    .add("", data)
)
geo.render_notebook()

 

MAP-地图

# 虚假数据
province = [
    '广东',
    '湖北',
    '湖南',
    '四川',
    '重庆',
    '黑龙江',
    '浙江',
    '山西',
    '河北',
    '安徽',
    '河南',
    '山东',
    '西藏']
data = [(i, random.randint(50, 150)) for i in province]

map_ = (
    Map()
    .add("", data, 'china')
)
map_.render_notebook()

 

BMAP-百度地图

# 虚假数据
province = [
    '广东',
    '湖北',
    '湖南',
    '四川',
    '重庆',
    '黑龙江',
    '浙江',
    '山西',
    '河北',
    '安徽',
    '河南',
    '山东',
    '西藏']
data = [(i, random.randint(50, 150)) for i in province]

bmap = (
    BMap()
    .add_schema(baidu_ak="FAKE_AK", center=[120.13066322374, 30.240018034923])
    .add("", data)
)
bmap.render_notebook()

基本图表

饼图

# 虚假数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data = [123, 153, 89, 107, 98, 23]

pie = (Pie()
       .add('', [list(z) for z in zip(cate, data)])
       )

pie.render_notebook()

 

漏斗图

# 虚假数据
cate = ['访问', '注册', '加入购物车', '提交订单', '付款成功']
data = [30398, 15230, 10045, 3109, 1698]

funnel = (Funnel()
          .add("", [list(z) for z in zip(cate, data)])
          )

funnel.render_notebook()

 

 

仪表盘

gauge = (Gauge()
          .add("", [('转化率',34)])
          )

gauge.render_notebook()

 

水球图

liquid = (Liquid()
          .add("", [0.52, 0.44])
          )

liquid.render_notebook()

 

日历图

import math

# 虚假数据
begin = datetime.date(2019, 1, 1)
end = datetime.date(2019, 12, 31)
data = [[str(begin + datetime.timedelta(days=i)), abs(math.cos(i/100))* random.randint(1000, 1200)]
        for i in range((end - begin).days + 1)]
        
calendar = (
        Calendar()
        .add("", data, calendar_opts=opts.CalendarOpts(range_="2019"))
    )

calendar.render_notebook()

 

关系图

nodes = [
    {"name": "结点1", "symbolSize": 1},
    {"name": "结点2", "symbolSize": 2},
    {"name": "结点3", "symbolSize": 3},
    {"name": "结点4", "symbolSize": 4},
    {"name": "结点5", "symbolSize": 5},
    {"name": "结点6", "symbolSize": 6},
    {"name": "结点7", "symbolSize": 7},
    {"name": "结点8", "symbolSize": 8},
]
links = [{'source': '结点1', 'target': '结点2'},
         {'source': '结点1', 'target': '结点3'},
         {'source': '结点1', 'target': '结点4'},
         {'source': '结点2', 'target': '结点1'},
         {'source': '结点3', 'target': '结点4'},
         {'source': '结点3', 'target': '结点5'},
         {'source': '结点3', 'target': '结点6'},
         {'source': '结点4', 'target': '结点1'},
         {'source': '结点4', 'target': '结点2'},
         {'source': '结点4', 'target': '结点7'},
         {'source': '结点4', 'target': '结点8'},
         {'source': '结点5', 'target': '结点1'},
         {'source': '结点5', 'target': '结点4'},
         {'source': '结点5', 'target': '结点6'},
         {'source': '结点5', 'target': '结点7'},
         {'source': '结点5', 'target': '结点8'},
         {'source': '结点6', 'target': '结点1'},
         {'source': '结点6', 'target': '结点7'},
         {'source': '结点6', 'target': '结点8'},
         {'source': '结点7', 'target': '结点1'},
         {'source': '结点7', 'target': '结点2'},
         {'source': '结点7', 'target': '结点8'},
         {'source': '结点8', 'target': '结点1'},
         {'source': '结点8', 'target': '结点2'},
         {'source': '结点8', 'target': '结点3'},
         ]

graph = (
    Graph()
    .add("", nodes, links)
)

graph.render_notebook()

 

平行坐标系

# 虚假数据
data = [
    ['一班', 78, 91, 123, 78, 82, 67, "优秀"],
    ['二班', 89, 101, 127, 88, 86, 75, "良好"],
    ['三班', 86, 93, 101, 84, 90, 73, "合格"],
]

parallel = (
    Parallel()
    .add_schema(
        [
            opts.ParallelAxisOpts(
                dim=0,
                name="班级",
                type_="category",
                data=["一班", "二班", "三班"],
            ),
            opts.ParallelAxisOpts(dim=1, name="英语"),
            opts.ParallelAxisOpts(dim=2, name="数学"),
            opts.ParallelAxisOpts(dim=3, name="语文"),
            opts.ParallelAxisOpts(dim=4, name="物理"),
            opts.ParallelAxisOpts(dim=5, name="生物"),
            opts.ParallelAxisOpts(dim=6, name="化学"),
            opts.ParallelAxisOpts(
                dim=7,
                name="评级",
                type_="category",
                data=["优秀", "良好", "合格"],
            ),
        ]
    )
    .add("", data)
)

parallel.render_notebook()

 

极坐标系

# 虚假数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data = [123, 153, 89, 107, 98, 23]


polar = (
    Polar()
    .add_schema(
        radiusaxis_opts=opts.RadiusAxisOpts(data=cate, type_="category"),
    )
    .add("", data, type_='bar')
)

polar.render_notebook()

 

雷达图

# 虚假数据
data = [
    [78, 91, 123, 78, 82, 67],
    [89, 101, 127, 88, 86, 75],
    [86, 93, 101, 84, 90, 73],
]


radar = (Radar()
         .add_schema(schema=[
             opts.RadarIndicatorItem(name="语文", max_=150),
             opts.RadarIndicatorItem(name="数学", max_=150),
             opts.RadarIndicatorItem(name="英语", max_=150),
             opts.RadarIndicatorItem(name="物理", max_=100),
             opts.RadarIndicatorItem(name="生物", max_=100),
             opts.RadarIndicatorItem(name="化学", max_=100),
         ]
)
    .add('', data)
)
radar.render_notebook()

 

旭日图 

# 虚假数据
data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     },
    {"name": "湖北",
     "children": [
             {"name": "武汉",
              "children": [
                  {"name": "洪山区", "value": 55},
                  {"name": "东湖高新", "value": 78},
                  {"name": "江夏区", "value": 34},
              ]},
             {"name": "鄂州", "value": 67},
             {"name": "襄阳", "value": 34},
     ],
     },
    {"name": "北京", "value": 235}
]


sunburst = (Sunburst()
            .add("", data_pair=data)
            )

sunburst.render_notebook()

 

桑基图

# 虚假数据
nodes = [
    {"name": "访问"},
    {"name": "注册"},
    {"name": "付费"},
]

links = [
    {"source": "访问", "target": "注册", "value": 50},
    {"source": "注册", "target": "付费", "value": 30},
]


sankey = (
    Sankey()
    .add("", nodes, links)
)

sankey.render_notebook()

 

河流图

# 虚假数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
date_list = ["2020/4/{}".format(i + 1) for i in range(30)]

data = [[day, random.randint(10, 50), c] for day in date_list for c in cate]


river = (
    ThemeRiver()
    .add(
        series_name=cate,
        data=data,
        singleaxis_opts=opts.SingleAxisOpts(type_="time")
    )
)

river.render_notebook()

 

词云图

words = [
    ("hey", 230),
    ("jude", 124),
    ("dont", 436),
    ("make", 255),
    ("it", 247),
    ("bad", 244),
    ("Take", 138),
    ("a sad song", 184),
    ("and", 12),
    ("make", 165),
    ("it", 247),
    ("better", 182),
    ("remember", 255),
    ("to", 150),
    ("let", 162),
    ("her", 266),
    ("into", 60),
    ("your", 82),
    ("heart", 173),
    ("then", 365),
    ("you", 360),
    ("can", 282),
    ("start", 273),
    ("make", 265),
]


wc = (
    WordCloud()
    .add("", words)
)

wc.render_notebook()

 

3D表图

3D散点图

data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(100)]

scatter3D = (Scatter3D()
             .add("", data)
             )

scatter3D.render_notebook()

 

3D折线图

data = []
for t in range(0, 1000):
    x = math.cos(t/10)
    y = math.sin(t/10)
    z = t/10
    data.append([x, y, z])

line3D = (Line3D()
          .add("", data,
               xaxis3d_opts=opts.Axis3DOpts(type_="value"),
               yaxis3d_opts=opts.Axis3DOpts(type_="value"))
          )

line3D.render_notebook()

 

3D直方图

data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']


bar3D = (
    Bar3D()
    .add(
        "",
        data,
        xaxis3d_opts=opts.Axis3DOpts(hour_list, type_="category"),
        yaxis3d_opts=opts.Axis3DOpts(week_list, type_="category"),
        zaxis3d_opts=opts.Axis3DOpts(type_="value"),
    )
)

bar3D.render_notebook()

 

3D地图

# 虚假数据
province = [
    '广东',
    '湖北',
    '湖南',
    '四川',
    '重庆',
    '黑龙江',
    '浙江',
    '山西',
    '河北',
    '安徽',
    '河南',
    '山东',
    '西藏']
data = [(i, random.randint(50, 150)) for i in province]

map3d = (
    Map3D()
    .add("", data_pair=data, maptype='china')
)
map3d.render_notebook()

 

3D地球

from pyecharts.faker import POPULATION


mapglobe = (
    MapGlobe()
    .add_schema()
    .add(
        series_name="",
        maptype="world",
        data_pair=POPULATION[1:]
    )
)

mapglobe.render_notebook()

 

树型图表

树图

# 虚假数据
data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     }
]


tree = (
    Tree()
    .add("", data)
)

tree.render_notebook()

 

矩形树图

# 虚假数据
data = [
    {"name": "湖南",
     "children": [
             {"name": "长沙",
              "children": [
                  {"name": "雨花区", "value": 55},
                  {"name": "岳麓区", "value": 34},
                  {"name": "天心区", "value": 144},
              ]},
             {"name": "常德",
              "children": [
                      {"name": "武陵区", "value": 156},
                      {"name": "鼎城区", "value": 134},
              ]},
             {"name": "湘潭", "value": 87},
             {"name": "株洲", "value": 23},
     ],
     },
    {"name": "湖北",
     "children": [
             {"name": "武汉",
              "children": [
                  {"name": "洪山区", "value": 55},
                  {"name": "东湖高新", "value": 78},
                  {"name": "江夏区", "value": 34},
              ]},
             {"name": "鄂州", "value": 67},
             {"name": "襄阳", "value": 34},
     ],
     },
    {"name": "北京", "value": 235}
]

treemap = (
    TreeMap()
    .add("", data)
)

treemap.render_notebook()

 

组合图表

Time-时间轴

# 示例数据
begin = datetime.date(2020, 4, 1)
end = datetime.date(2020, 4, 20)

cate = ['Apple', 'Huawei', 'MI', 'Oppo', 'Vivo', 'Samsung']

# 随机生成数据的方法


def random_data(n): return [random.randint(100, 200) for i in range(n)]


# 新建一个timeline对象
tl = Timeline()
tl.add_schema()

for i in range((end - begin).days + 1):
    day = begin + datetime.timedelta(days=i)

    bar = (Bar()
           .add_xaxis(cate)
           .add_yaxis('电商渠道', random_data(len(cate)))
           )

    tl.add(bar, day)

tl.render_notebook()

 

Tab-选项卡

# 选项卡
cate = ['Apple', 'Huawei', 'MI', 'Oppo', 'Vivo', 'Samsung']

# 时间范围
begin = datetime.date(2020, 4, 1)
end = datetime.date(2020, 4, 20)
date_list = [str(begin + datetime.timedelta(days=i))
             for i in range((end - begin).days + 1)]

# 随机生成数据的方法


def random_data(n): return [random.randint(0, 100) for i in range(n)]



# 新建一个tab对象
tab = Tab()

for c in cate:
    day = begin + datetime.timedelta(days=i)

    line = (Line()
            .add_xaxis(date_list)
            .add_yaxis('', random_data(len(date_list)))
            )

    tab.add(line, c)

tab.render_notebook()

 

Page-顺序多图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


bar = (Bar()
       .add_xaxis(x_data)
       .add_yaxis('', y_data)
       )

line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        )

page = Page()
page.add(bar, line)
page.render_notebook()

 

 Grid-并行多图

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


bar = (Bar()
       .add_xaxis(x_data)
       .add_yaxis('', y_data)
       )

line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        )

grid = (Grid()
        .add(bar,grid_opts=opts.GridOpts(pos_bottom="65%", pos_left="50%"))
        .add(line,grid_opts=opts.GridOpts(pos_left="15%"))
        )
grid.render_notebook()

 

上面应该差不多就是pyecharts所作的图了吧,接下来要介绍如何作些图,介绍主题和它们的全局配置项和系列配置项。

主题设置

 

theme_list = ['chalk',
              'dark',
              'essos',
              'infographic',
              'light',
              'macarons',
              'purple-passion',
              'roma',
              'romantic',
              'shine',
              'vintage',
              'walden',
              'westeros',
              'white',
              'wonderland']

上面都是pyecharts绘图的主题可选参数。

bar = (
        Bar(init_opts=opts.InitOpts(
            # 设置主题
            theme=xxx))
# xxx从上面主题参数中选一个

配置项

全局配置项

InitOpts---初始化配置项

参数
 width: str = "900px", # 图表画布宽度,css 长度单位。 
height: str = "500px",  # 图表画布高度,css 长度单位。 
chart_id: Optional[str] = None,  # 图表 ID,图表唯一标识,用于在多图表时区分。
renderer: str = RenderType.CANVAS,   # 渲染风格,可选 "canvas", "svg"   # # 参考 `全局变量` 章节  
page_title: str = "Awesome-pyecharts",  # 网页标题  
theme: str = "white",   # 图表主题  
bg_color: Optional[str] = None,  # 图表背景颜色  
js_host: str = "",   # 远程 js host,如不设置默认为 https://assets.pyecharts.org/assets/  
  # 参考 `全局变量` 章节  
animation_opts: Union[AnimationOpts, dict] = AnimationOpts(), # 画图动画初始化配置,参考 `global_options.AnimationOpts` 
画布大小设置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 画布大小配置
bar = (
    Bar(init_opts=opts.InitOpts(width='600px', height='400px'))
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
)

bar.render_notebook()

 

主题设置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 主题配置
bar = (
    Bar(init_opts=opts.InitOpts(theme='dark'))
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
)

bar.render_notebook()

 

网页标题
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 主题配置
bar = (
    Bar(init_opts=opts.InitOpts(page_title='AwesomeTang'))
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
)

bar.render_notebook()

 

背景颜色
  • 常见颜色可通过"white", "green"等来配置;

  • 支持rgbrgba通道颜色配置,如:bg_color='rgb(1,3,4)

 

# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 背景颜色配置
bar = (
    Bar(init_opts=opts.InitOpts(bg_color='rgba(123, 200, 88, 0.4)'))
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
)

bar.render_notebook()

 

 TitleOpts----标题配置项

参数
title: Optional[str] = None,  # 主标题文本,支持使用 \n 换行。
title_link: Optional[str] = None,# 主标题跳转 URL 链接  
title_target: Optional[str] = None, # 主标题跳转链接方式  
 # 默认值是: blank  
 # 可选参数: 'self', 'blank'  
# 'self' 当前窗口打开; 'blank' 新窗口打开  
subtitle: Optional[str] = None,# 副标题文本,支持使用 \n 换行。  
subtitle_link: Optional[str] = None,  # 副标题跳转 URL 链接  
subtitle_target: Optional[str] = None,  # 副标题跳转链接方式  
    # 默认值是: blank  
    # 可选参数: 'self', 'blank'  
    # 'self' 当前窗口打开; 'blank' 新窗口打开  
 pos_left: Optional[str] = None, # title 组件离容器左侧的距离。  
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'left', 'center', 'right'。  
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。 
pos_right: Optional[str] = None,# title 组件离容器右侧的距离。  
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。  
pos_top: Optional[str] = None, # title 组件离容器上侧的距离。  
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'top', 'middle', 'bottom'。  
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。  
pos_bottom: Optional[str] = None,  # title 组件离容器下侧的距离。  
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
 padding: Union[Sequence, Numeric] = 5, # 标题内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。  
    # // 设置内边距为 5  
    # padding: 5  
    # // 设置上下的内边距为 5,左右的内边距为 10  
    # padding: [5, 10]  
    # // 分别设置四个方向的内边距  
    # padding: [  
    #     5,  // 上  
    #     10, // 右  
    #     5,  // 下  
    #     10, // 左  
    # ]  
item_gap: Numeric = 10, # 主副标题之间的间距。  
title_textstyle_opts: Union[TextStyleOpts, dict, None] = None, # 主标题字体样式配置项,参考 `series_options.TextStyleOpts` 
subtitle_textstyle_opts: Union[TextStyleOpts, dict, None] = None, # 副标题字体样式配置项,参考 `series_options.TextStyleOpts`  
添加主/副标题
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 背景颜色配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题", subtitle='我是副标题'))
)

bar.render_notebook()

 

标题位置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题位置配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                               subtitle='我是副标题',
                                               pos_left='center',
                                               pos_top='10%'))
)

bar.render_notebook()

 

标题字体样式配置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题", subtitle='我是副标题',
                                               # 主标题样式
                                               title_textstyle_opts=opts.TextStyleOpts(
                                                   color='red'),
                                               # 副标题样式
                                               subtitle_textstyle_opts=opts.TextStyleOpts(
                                                   color='green')))
)

bar.render_notebook()

 

LegendOpts--图例配置项

参数
type_: Optional[str] = None, # 图例的类型。可选值:  
    # 'plain':普通图例。缺省就是普通图例。  
    # 'scroll':可滚动翻页的图例。当图例数量较多时可以使用。 
selected_mode: Union[str, bool, None] = None,  # 图例选择的模式,控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 false 关闭  
 # 除此之外也可以设成 'single' 或者 'multiple' 使用单选或者多选模式。  
is_show: bool = True,# 是否显示图例组件 
pos_left: Union[str, Numeric, None] = None,  # 图例组件离容器左侧的距离。  
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'left', 'center', 'right'。  
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。 
pos_right: Union[str, Numeric, None] = None,  # 图例组件离容器右侧的距离。  
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。 
pos_top: Union[str, Numeric, None] = None, # 图例组件离容器上侧的距离。  
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'top', 'middle', 'bottom'。  
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
 pos_bottom: Union[str, Numeric, None] = None, # 图例组件离容器下侧的距离。  
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
orient: Optional[str] = None,  # 图例列表的布局朝向。可选:'horizontal', 'vertical'  
align: Optional[str] = None,  # 图例标记和文本的对齐。默认自动(auto)  
    # 根据组件的位置和 orient 决定  
    # 当组件的 left 值为 'right' 以及纵向布局(orient 为 'vertical')的时候为右对齐,即为 'right'。  
    # 可选参数: `auto`, `left`, `right` 
 padding: int = 5, # 图例内边距,单位px,默认各方向内边距为5  
item_gap: int = 10, # 图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。  
    # 默认间隔为 10  

 

item_width: int = 25, # 图例标记的图形宽度。默认宽度为 25  
item_height: int = 14, # 图例标记的图形高度。默认高度为 14 
inactive_color: Optional[str] = None, 图例关闭时的颜色。默认是 #ccc 
textstyle_opts: Union[TextStyleOpts, dict, None] = None, # 图例组件字体样式,参考 `series_options.TextStyleOpts`  
legend_icon: Optional[str] = None,   # 图例项的 icon。  
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'  
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。  
    # 可以通过 'path://' 将图标设置为任意的矢量路径。 
关闭/显示图例
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True))
)

bar.render_notebook()

 

图例显示位置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,
                                                 pos_left='20%',
                                                 pos_bottom='90%'))
)

bar.render_notebook()

 

图例水平/垂直布局
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,
                                                 # 可选"vertical","horizontal"
                                                 orient='vertical'))
)

bar.render_notebook()

 

图例间隔
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,
                                                 # 默认间隔为10
                                                 item_gap=100))
)

bar.render_notebook()

 

图例文本样式
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,
                                                 # 文本样式配置
                                                 textstyle_opts=opts.TextStyleOpts(color='red')))
)

bar.render_notebook()

 

图例形状
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 图例配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True,
                                                 # 可选'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
                                                 legend_icon='circle'))
)

bar.render_notebook()

 

TooltipOpts-- 提示框配置项

参数
is_show: bool = True, # 是否显示提示框组件,包括提示框浮层和 axisPointer。 
trigger: str = "item", # 触发类型。可选:  
    # 'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。  
    # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。  
    # 'none': 什么都不触发  
trigger_on: str = "mousemove|click", # 提示框触发的条件,可选:  
    # 'mousemove': 鼠标移动时触发。  
    # 'click': 鼠标点击时触发。  
    # 'mousemove|click': 同时鼠标移动和点击时触发。  
    # 'none': 不在 'mousemove' 或 'click' 时触发, 

 

axis_pointer_type: str = "line",  # 指示器类型。可选  
    # 'line':直线指示器  
    # 'shadow':阴影指示器  
    # 'none':无指示器  
    # 'cross':十字准星指示器。其实是种简写,表示启用两个正交的轴的 axisPointer。 
formatter: Optional[str] = None, # 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。  
    # 字符串模板 模板变量有:  
    # {a}:系列名。  
    # {b}:数据名。  
    # {c}:数据值。  
background_color: Optional[str] = None,   # 提示框浮层的背景颜色。
border_color: Optional[str] = None, # 提示框浮层的边框颜色。  
border_width: Numeric = 0, # 提示框浮层的边框宽。  
textstyle_opts: TextStyleOpts = TextStyleOpts(font_size=14), # 文字样式配置项,参考 `series_options.TextStyleOpts` 
触发设置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 提示框配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True,
                                                   # 鼠标移动或者点击时触发
                                                   trigger_on="mousemove|click"))
)

bar.render_notebook()

 

提示框背景颜色
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 提示框配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True,
                                                   # 提示框背景颜色
                                                   background_color="green"))
)

bar.render_notebook()

 

内容格式
  • {a}: 系列名称

  • {b}:数据名

  • {c}:数值

  • {d}:百分比,只在特定图表中生效,如饼图,漏斗图

 
# 虚假数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
data = [123, 153, 89, 107, 98, 23]

# 提示框内容格式
pie = (Pie()
       .add('', [list(z) for z in zip(cate, data)])
       .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True,
                                                      formatter='{b} :{d}%'))
       )

pie.render_notebook()

 

提交文本样式
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 提示框文本样式
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True,
                                                   # 文本样式配置
                                                   textstyle_opts=opts.TextStyleOpts(color='red')))
)

bar.render_notebook()

 

AxisOpts---坐标轴配置项

参数
type_: Optional[str] = None, # 坐标轴类型。可选:  
    # 'value': 数值轴,适用于连续数据。  
    # 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。  
    # 'time': 时间轴,适用于连续的时序数据,与数值轴相比时间轴带有时间的格式化,在刻度计算上也有所不同,  
    # 例如会根据跨度的范围来决定使用月,星期,日还是小时范围的刻度。  
    # 'log' 对数轴。适用于对数数据。 
name: Optional[str] = None,  # 坐标轴名称。 
is_show: bool = True, # 是否显示 x 轴。 
is_scale: bool = False,# 只在数值轴中(type: 'value')有效。  
    # 是否是脱离 0 值比例。设置成 true 后坐标刻度不会强制包含零刻度。在双数值轴的散点图中比较有用。  
    # 在设置 min 和 max 之后该配置项无效。
is_inverse: bool = False, # 是否反向坐标轴。 
name_location: str = "end",  # 坐标轴名称显示位置。可选:  
    # 'start', 'middle' 或者 'center','end'  
name_gap: Numeric = 15, # 坐标轴名称与轴线之间的距离。
name_rotate: Optional[Numeric] = None, # 坐标轴名字旋转,角度值。 
interval: Optional[Numeric] = None,  # 强制设置坐标轴分割间隔。  
    # 因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,  
    # 这时候可以使用 interval 配合 min、max 强制设定刻度划分,一般不建议使用。  
    # 无法在类目轴中使用。在时间轴(type: 'time')中需要传时间戳,在对数轴(type: 'log')中需要传指数值。
grid_index: Numeric = 0, # x 轴所在的 grid 的索引,默认位于第一个 grid。
position: Optional[str] = None,   # x 轴的位置。可选:  
    # 'top', 'bottom'  
    # 默认 grid 中的第一个 x 轴在 grid 的下方('bottom'),第二个 x 轴视第一个 x 轴的位置放在另一侧。
offset: Numeric = 0, # Y 轴相对于默认位置的偏移,在相同的 position 上有多个 Y 轴的时候有用。
split_number: Numeric = 5, # 坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整。   
    # 默认值是 5  
 boundary_gap: Union[str, bool, None] = None,   # 坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样。  
    # 类目轴中 boundaryGap 可以配置为 true 和 false。默认为 true,这时候刻度只是作为分隔线,  
    # 标签和数据点都会在两个刻度之间的带(band)中间。  
    # 非类目轴,包括时间,数值,对数轴,boundaryGap是一个两个值的数组,分别表示数据最小值和最大值的延伸范围  
    # 可以直接设置数值或者相对的百分比,在设置 min 和 max 后无效。 示例:boundaryGap: ['20%', '20%'] 
min_: Union[Numeric, str, None] = None,  # 坐标轴刻度最小值。  
    # 可以设置成特殊值 'dataMin',此时取数据在该轴上的最小值作为最小刻度。  
    # 不设置时会自动计算最小值保证坐标轴刻度的均匀分布。  
    # 在类目轴中,也可以设置为类目的序数(如类目轴 data: ['类A', '类B', '类C'] 中,序数 2 表示 '类C'。  
    # 也可以设置为负数,如 -3)。 
max_: Union[Numeric, str, None] = None,  # 坐标轴刻度最大值。  
    # 可以设置成特殊值 'dataMax',此时取数据在该轴上的最大值作为最大刻度。  
    # 不设置时会自动计算最大值保证坐标轴刻度的均匀分布。  
    # 在类目轴中,也可以设置为类目的序数(如类目轴 data: ['类A', '类B', '类C'] 中,序数 2 表示 '类C'。  
    # 也可以设置为负数,如 -3)。  
min_interval: Numeric = 0, # 自动计算的坐标轴最小间隔大小。  
    # 例如可以设置成1保证坐标轴分割刻度显示成整数。  
    # 默认值是 0  
max_interval: Optional[Numeric] = None,  # 自动计算的坐标轴最大间隔大小。  
    # 例如,在时间轴((type: 'time'))可以设置成 3600 * 24 * 1000 保证坐标轴分割刻度最大为一天。  
axisline_opts: Union[AxisLineOpts, dict, None] = None, # 坐标轴刻度线配置项,参考 `global_options.AxisLineOpts` 
axistick_opts: Union[AxisTickOpts, dict, None] = None,  # 坐标轴刻度配置项,参考 `global_options.AxisTickOpts`  
axislabel_opts: Union[LabelOpts, dict, None] = None,  # 坐标轴标签配置项,参考 `series_options.LabelOpts` 
axispointer_opts: Union[AxisPointerOpts, dict, None] = None, # 坐标轴指示器配置项,参考 `global_options.AxisPointerOpts` 
name_textstyle_opts: Union[TextStyleOpts, dict, None] = None,# 坐标轴名称的文字样式,参考 `series_options.TextStyleOpts` 
splitarea_opts: Union[SplitAreaOpts, dict, None] = None, # 分割区域配置项,参考 `series_options.SplitAreaOpts`  
splitline_opts: Union[SplitLineOpts, dict] = SplitLineOpts(),  # 分割线配置项,参考 `series_options.SplitLineOpts`  
坐标轴类型
# 虚假数据
x_data = [random.randint(0, 100) for _ in range(20)]
y_data = [random.randint(0, 100) for _ in range(20)]

# 将x轴设置为数值类型
scatter = (Scatter()
           .add_xaxis(x_data)
           .add_yaxis('', y_data)
           .set_global_opts(xaxis_opts=opts.AxisOpts(type_='value'))
           )

scatter.render_notebook()

 

添加坐标轴名称
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 添加坐标轴名称
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(name='销售额/万元'))
)

bar.render_notebook()

 

坐标轴名称文本样式
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 添加坐标轴名称
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(name='销售额/万元',
                                              name_textstyle_opts=opts.TextStyleOpts(color='red')))
)

bar.render_notebook()

 

刻度最大/小值
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 坐标轴最大/最小值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(min_=20, max_=500))
)

bar.render_notebook()

 

坐标轴标签
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 坐标轴最大/最小值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(
        color='red',
        font_size=10)))
)

bar.render_notebook()

 

坐标轴线配置
class AxisLineOpts(  
    # 是否显示坐标轴轴线。  
    is_show: bool = True,  

    # X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。  
    is_on_zero: bool = True,  

    # 当有双轴时,可以用这个属性手动指定,在哪个轴的 0 刻度上。  
    on_zero_axis_index: int = 0,  

    # 轴线两边的箭头。可以是字符串,表示两端使用同样的箭头;或者长度为 2 的字符串数组,分别表示两端的箭头。  
    # 默认不显示箭头,即 'none'。  
    # 两端都显示箭头可以设置为 'arrow'。  
    # 只在末端显示箭头可以设置为 ['none', 'arrow']。  
    symbol: Optional[str] = None,  

    # 坐标轴线风格配置项,参考 `series_optionsLineStyleOpts`  
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,  
)
坐标轴线--是否显示
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 关闭坐标轴线
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(axisline_opts=opts.AxisLineOpts(is_show=False)))
)

bar.render_notebook()

 图

坐标轴线- 线样式配置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 坐标轴线样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(
        axisline_opts=opts.AxisLineOpts(is_show=True,
                                        linestyle_opts=opts.LineStyleOpts(width=2, color='red'))))
)

bar.render_notebook()

 

坐标轴线--显示箭头
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 显示箭头
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(
        axisline_opts=opts.AxisLineOpts(is_show=True,
                                        symbol='arrow')))
)

bar.render_notebook()

 

坐标轴刻度配置
class AxisPointerOpts(  
    # 默认显示坐标轴指示器  
    is_show: bool = True,  

    # 不同轴的 axisPointer 可以进行联动,在这里设置。联动表示轴能同步一起活动。  
    # 轴依据他们的 axisPointer 当前对应的值来联动。  
    # link 是一个数组,其中每一项表示一个 link group,一个 group 中的坐标轴互相联动。  
    # 具体使用方式可以参见:https://www.echartsjs.com/option.html#axisPointer.link  
    link: Sequence[dict] = None,  

    # 指示器类型。  
    # 可选参数如下,默认为 'line'  
    # 'line' 直线指示器  
    # 'shadow' 阴影指示器  
    # 'none' 无指示器  
    type_: str = "line",  

    # 坐标轴指示器的文本标签,坐标轴标签配置项,参考 `series_options.LabelOpts`  
    label: Union[LabelOpts, dict, None] = None,  

    # 坐标轴线风格配置项,参考 `series_optionsLineStyleOpts`  
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,  
)
坐标轴刻度--是否显示
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 显示箭头
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(
        axistick_opts=opts.AxisTickOpts(is_show=False)))
)

bar.render_notebook()

 

坐标轴刻度--朝向
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 坐标轴刻度朝向
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(yaxis_opts=opts.AxisOpts(
        axistick_opts=opts.AxisTickOpts(is_inside=True)))
)

bar.render_notebook()

 

VisualMapOpts---视觉映射配置项

参数
is_show: bool = True, # 是否显示视觉映射配置  
type_: str = "color",  # 映射过渡类型,可选,"color", "size"  
min_: Union[int, float] = 0, # 指定 visualMapPiecewise 组件的最小值。  
max_: Union[int, float] = 100,  # 指定 visualMapPiecewise 组件的最大值。
range_text: Union[list, tuple] = None, # 两端的文本,如['High', 'Low']。
range_color: Union[Sequence[str]] = None,  # visualMap 组件过渡颜色  
 range_size: Union[Sequence[int]] = None, # visualMap 组件过渡 symbol 大小  
range_opacity: Optional[Numeric] = None,   # visualMap 图元以及其附属物(如文字标签)的透明度。
orient: str = "vertical",  # 如何放置 visualMap 组件,水平('horizontal')或者竖直('vertical')。
pos_left: Optional[str] = None,  # visualMap 组件离容器左侧的距离。  
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'left', 'center', 'right'。  
    # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
pos_right: Optional[str] = None, # visualMap 组件离容器右侧的距离。  
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。 
pos_top: Optional[str] = None,  # visualMap 组件离容器上侧的距离。  
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'top', 'middle', 'bottom'。  
    # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。 
pos_bottom: Optional[str] = None,  # visualMap 组件离容器下侧的距离。  
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
split_number: int = 5, # 对于连续型数据,自动平均切分成几段。默认为5段。连续数据的范围需要 max 和 min 来指定  
series_index: Union[Numeric, Sequence, None] = None, # 指定取哪个系列的数据,默认取所有系列。  
dimension: Optional[Numeric] = None,# 组件映射维度  
is_calculable: bool = True, # 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
is_piecewise: bool = False, # 是否为分段型 
is_inverse: bool = False, # 是否反转 visualMap 组件 
pieces: Optional[Sequence] = None,# 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式。
out_of_range: Optional[Sequence] = None, # 定义 在选中范围外 的视觉元素。(用户可以和 visualMap 组件交互,用鼠标或触摸选择范围)  
    #  可选的视觉元素有:  
    #  symbol: 图元的图形类别。  
    #  symbolSize: 图元的大小。  
    #  color: 图元的颜色。  
    #  colorAlpha: 图元的颜色的透明度。  
    #  opacity: 图元以及其附属物(如文字标签)的透明度。  
    #  colorLightness: 颜色的明暗度,参见 HSL。  
    #  colorSaturation: 颜色的饱和度,参见 HSL。  
    #  colorHue: 颜色的色调,参见 HSL。 
item_width: int = 0,  # 图形的宽度,即长条的宽度。
item_height: int = 0,# 图形的高度,即长条的高度。
background_color: Optional[str] = None, # visualMap 组件的背景色。  
border_color: Optional[str] = None, # visualMap 组件的边框颜色。 
border_width: int = 0, # visualMap 边框线宽,单位px。
textstyle_opts: Union[TextStyleOpts, dict, None] = None,  # 文字样式配置项,参考 `series_options.TextStyleOpts`  
关闭/显示视觉组件
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=False))
        )

heat.render_notebook()

 

指定组件最大/小值 
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           min_=20, 
                                                           max_=80))
        )

heat.render_notebook()

图 

 

颜色配置
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           range_color=['green', 'yellow', 'red']))
        )

heat.render_notebook()

 

 组件水平/垂直布局
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           # 可选 水平('horizontal')或者竖直('vertical')
                                                           orient='horizontal'))
        )

heat.render_notebook()

 

组件位置
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           pos_top='center'))
        )

heat.render_notebook()

 

颜色分段显示
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           is_piecewise=True))
        )

heat.render_notebook()

 

自定义分段
# 虚假数据
data = [[i, j, random.randint(0, 100)] for i in range(24) for j in range(7)]
hour_list = [str(i) for i in range(24)]
week_list = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']

# 添加一个特殊值作为示例
data[-1] = [23, 6, 100]

heat = (HeatMap()
        .add_xaxis(hour_list)
        .add_yaxis("", week_list, data)
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(is_show=True,
                                                           # is_piecewise需设置为True
                                                           is_piecewise=True,
                                                           pieces=[{"max": 20},
                                                                   {"min": 20,
                                                                       "max": 50},
                                                                   {"min": 50,
                                                                       "max": 99},
                                                                   # 设置特殊值,等于100的时候显示黑色
                                                                   {"value": 100, "color": 'black'}]))
        )

heat.render_notebook()

 

DataZoomOpts--区域缩放配置项

参数
is_show: bool = True,# 是否显示 组件。如果设置为 false,不会显示,但是数据过滤的功能还存在。
type_: str = "slider", # 组件类型,可选 "slider", "inside" 
is_realtime: bool = True, # 拖动时,是否实时更新系列的视图。如果设置为 false,则只在拖拽结束的时候更新。
range_start: Numeric = 20,  # 数据窗口范围的起始百分比。范围是:0 ~ 100。表示 0% ~ 100%。 
range_end: Numeric = 80, # 数据窗口范围的结束百分比。范围是:0 ~ 100  
start_value: Union[int, str, None] = None,  # 数据窗口范围的起始数值。如果设置了 start 则 startValue 失效。 
end_value: Union[int, str, None] = None, # 数据窗口范围的结束数值。如果设置了 end 则 endValue 失效。 
orient: str = "horizontal",# 布局方式是横还是竖。不仅是布局方式,对于直角坐标系而言,也决定了,缺省情况控制横向数轴还是纵向数轴  
    # 可选值为:'horizontal', 'vertical'  
xaxis_index: Union[int, Sequence[int], None] = None,# 设置 dataZoom-inside 组件控制的 x 轴(即 xAxis,是直角坐标系中的概念,参见 grid)。  
    # 不指定时,当 dataZoom-inside.orient 为 'horizontal'时,默认控制和 dataZoom 平行的第一个 xAxis  
    # 如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。
yaxis_index: Union[int, Sequence[int], None] = None, # 设置 dataZoom-inside 组件控制的 y 轴(即 yAxis,是直角坐标系中的概念,参见 grid)。  
    # 不指定时,当 dataZoom-inside.orient 为 'horizontal'时,默认控制和 dataZoom 平行的第一个 yAxis  
    # 如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。  
is_zoom_lock: bool = False,  # 是否锁定选择区域(或叫做数据窗口)的大小。  
    # 如果设置为 true 则锁定选择区域的大小,也就是说,只能平移,不能缩放。
pos_left: Optional[str] = None,  # dataZoom-slider 组件离容器左侧的距离。  
    # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'left', 'center', 'right'。  
    # 如果 left 的值为 'left', 'center', 'right',组件会根据相应的位置自动对齐。
pos_top: Optional[str] = None,  # dataZoom-slider 组件离容器上侧的距离。  
    # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,  
    # 也可以是 'top', 'middle', 'bottom'。  
    # 如果 top 的值为 'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
pos_right: Optional[str] = None,  # dataZoom-slider 组件离容器右侧的距离。  
    # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。  
    # 默认自适应。  
pos_bottom: Optional[str] = None,  # dataZoom-slider组件离容器下侧的距离。  
    # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。  
    # 默认自适应。
缩放比例
# 虚假数据
x_data = list(range(1990,2020))
y_data_1 = [random.randint(0, 100) for _ in x_data]
y_data_2 = [random.randint(0, 100) for _ in x_data]


bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(datazoom_opts=opts.DataZoomOpts(range_start=50, range_end=80))
)

bar.render_notebook()

 图

缩放Y轴
# 虚假数据
x_data = list(range(1990,2020))
y_data_1 = [random.randint(0, 100) for _ in x_data]
y_data_2 = [random.randint(0, 100) for _ in x_data]


bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .add_yaxis('图例2', y_data_2)
    .set_global_opts(datazoom_opts=opts.DataZoomOpts(orient="vertical"))
)

bar.render_notebook()

 

系列配置项

系列配置项有两种传参方式 

  • 通过.set_series_opts进行配置,如:
    bar = (  
        Bar()  
        .add_xaxis(x_data)  
        .add_yaxis('图例1', y_data_1)  
        .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(color='green'))  
    )
  • 添加系列数据的时候设置,如:
bar = (  
    Bar()  
    .add_xaxis(x_data)  
    .add_yaxis('系列1', y_data_1,   
        itemstyle_opts=opts.ItemStyleOpts(color='green'))  
)

ItemStyleOpts:图元样式配置项

参数
color: Optional[str] = None,# 图形的颜色。  
    # 颜色可以使用 RGB 表示,比如 'rgb(128, 128, 128)',如果想要加上 alpha 通道表示不透明度,  
    # 可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'。

 color0: Optional[str] = None,# 阴线 图形的颜色。

border_color: Optional[str] = None,  # 图形的描边颜色。支持的颜色格式同 color,不支持回调函数。 
border_color0: Optional[str] = None,# 阴线 图形的描边颜色。
opacity: Optional[Numeric] = None, # 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 
颜色配置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 坐标轴最大/最小值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(color='green'))
)

bar.render_notebook()

透明度配置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 坐标轴最大/最小值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(opacity=0.5))
)

bar.render_notebook()

 

描边颜色
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 坐标轴最大/最小值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('图例1', y_data_1)
    .set_series_opts(itemstyle_opts=opts.ItemStyleOpts(border_color='black'))
)

bar.render_notebook()

 图

TextStyleOpts:文字样式配置项

参数
color: Optional[str] = None,# 文字颜色。 
font_style: Optional[str] = None, # 文字字体的风格  
    # 可选:'normal','italic','oblique' 
font_weight: Optional[str] = None,  # 主标题文字字体的粗细,可选:  
    # 'normal','bold','bolder','lighter'  
font_family: Optional[str] = None, # 文字的字体系列  
    # 还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei'
font_size: Optional[Numeric] = None, # 文字的字体大小  
align: Optional[str] = None, # 文字水平对齐方式,默认自动  
vertical_align: Optional[str] = None, # 文字垂直对齐方式,默认自动 
line_height: Optional[str] = None, # 行高  
background_color: Optional[str] = None,  # 文字块背景色。可以是直接的颜色值,例如:'#123234', 'red', 'rgba(0,23,11,0.3)'
border_color: Optional[str] = None, # 文字块边框颜色 
 border_width: Optional[Numeric] = None, # 文字块边框宽度  
border_radius: Union[Numeric, Sequence, None] = None,  # 文字块的圆角 
padding: Union[Numeric, Sequence, None] = None, # 文字块的内边距   
    # 例如 padding: [3, 4, 5, 6]:表示 [上, 右, 下, 左] 的边距  
    # 例如 padding: 4:表示 padding: [4, 4, 4, 4]  
    # 例如 padding: [3, 4]:表示 padding: [3, 4, 3, 4] 
shadow_color: Optional[str] = None,  # 文字块的背景阴影颜色  
shadow_blur: Optional[Numeric] = None, # 文字块的背景阴影长度  
width: Optional[str] = None,# 文字块的宽度  
height: Optional[str] = None,# 文字块的高度  
rich: Optional[dict] = None,  # 在 rich 里面,可以自定义富文本样式。利用富文本样式,可以在标签中做出非常丰富的效果  
    # 具体配置可以参考一下 https://www.echartsjs.com/tutorial.html#%E5%AF%8C%E6%96%87%E6%9C%AC%E6%A0%87%E7%AD%BE 
 颜色设置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                               # 颜色配置
                                               title_textstyle_opts=opts.TextStyleOpts(color='red'))
                     )
)

bar.render_notebook()

 图

字体风格
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                                # 可选:'normal','italic','oblique'
                                               title_textstyle_opts=opts.TextStyleOpts(font_style="italic"))
                     )
)

bar.render_notebook()

 图

字体粗细
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                               # 'normal','bold','bolder','lighter'
                                               title_textstyle_opts=opts.TextStyleOpts(font_weight="lighter"))
                     )
)

bar.render_notebook()

 字体大小
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                               # 'normal','bold','bolder','lighter'
                                               title_textstyle_opts=opts.TextStyleOpts(font_size=30))
                     )
)

bar.render_notebook()

 

字体系列
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_global_opts(title_opts=opts.TitleOpts(title="我是主标题",
                                               # 设置文本字体
                                               title_textstyle_opts=opts.TextStyleOpts(font_family="serif"))
                     )
)

bar.render_notebook()

 

 

LabelOpts--标签配置项

参数
is_show: bool = True,   # 是否显示标签。
position: Union[str, Sequence] = "top", # 标签的位置。可选  
    # 'top','left','right','bottom','inside','insideLeft','insideRight'  
    # 'insideTop','insideBottom', 'insideTopLeft','insideBottomLeft'  
    # 'insideTopRight','insideBottomRight' 
 color: Optional[str] = None, # 文字的颜色。 # 如果设置为 'auto',则为视觉映射得到的颜色,如系列色。 
font_size: Numeric = 12, # 文字的字体大小  
font_style: Optional[str] = None, # 文字字体的风格,可选:  
    # 'normal','italic','oblique'
font_weight: Optional[str] = None, # 文字字体的粗细,可选:  
    # 'normal','bold','bolder','lighter'  
font_family: Optional[str] = None, # 文字的字体系列  
    # 还可以是 'serif' , 'monospace', 'Arial', 'Courier New', 'Microsoft YaHei'
rotate: Optional[Numeric] = None, # 标签旋转。从 -90 度到 90 度。正值是逆时针。 
margin: Optional[Numeric] = 8,# 刻度标签与轴线之间的距离。  
interval: Union[Numeric, str, None]= None, # 坐标轴刻度标签的显示间隔,在类目轴中有效。  
    # 默认会采用标签不重叠的策略间隔显示标签。  
    # 可以设置成 0 强制显示所有标签。  
    # 如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。  
    # 可以用数值表示间隔的数据,也可以通过回调函数控制。回调函数格式如下:  
    # (index:number, value: string) => boolean  
    # 第一个参数是类目的 index,第二个值是类目名称,如果跳过则返回 false。  
 horizontal_align: Optional[str] = None,  # 文字水平对齐方式,默认自动。可选:  
    # 'left','center','right'  
 vertical_align: Optional[str] = None,# 文字垂直对齐方式,默认自动。可选:  
    # 'top','middle','bottom' 
formatter: Optional[str] = None,# 标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行。  
    # 模板变量有 {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}(百分比) 
显示/关闭标签
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
)

bar.render_notebook()

 

标签显示位置
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 标题样式配置
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data_1)
    .add_yaxis('', y_data_2)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True,
                                               # 标签的位置。可选
                                               # 'top','left','right','bottom','inside','insideLeft','insideRight'
                                               # 'insideTop','insideBottom', 'insideTopLeft','insideBottomLeft'
                                               # 'insideTopRight','insideBottomRight'
                                               position='inside'))
)

bar.render_notebook()

 

LineStyleOpts:线样式配置项

参数
is_show: bool = True, # 是否显示  
width: Numeric = 1,  # 线宽。
opacity: Numeric = 1,  # 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 
curve: Numeric = 0, # 线的弯曲度,0 表示完全不弯曲 
 type_: str = "solid", # 线的类型。可选:  
    # 'solid', 'dashed', 'dotted'  
 color: Union[str, Sequence, None] = None,  #颜色
线宽
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('线宽为5', y_data_1, linestyle_opts=opts.LineStyleOpts(width=5))
        .add_yaxis('默认线宽', y_data_2, linestyle_opts=opts.LineStyleOpts(width=1))
        )

line.render_notebook()

 

线型
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]
y_data_3 = [223, 453, 189, 207, 221, 123]

# 'solid', 'dashed', 'dotted'
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('solid', y_data_1, linestyle_opts=opts.LineStyleOpts(type_='solid'))
        .add_yaxis('dashed', y_data_2, linestyle_opts=opts.LineStyleOpts(type_='dashed'))
        .add_yaxis('dotted', y_data_3, linestyle_opts=opts.LineStyleOpts(type_='dotted'))
        )

line.render_notebook()

 

颜色
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]
y_data_3 = [223, 453, 189, 207, 221, 123]

# 注意区分
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('1', y_data_1, color='green')
        .add_yaxis('2', y_data_2, color='green', linestyle_opts=opts.LineStyleOpts(color='black'))
        .add_yaxis('3', y_data_3, linestyle_opts=opts.LineStyleOpts(color='black'))
        )

line.render_notebook()

 

SplitLineOpts:分割线配置

参数
class SplitLineOpts(  
    # 是否显示分割线  
    is_show: bool = False,  

    # 线风格配置项,参考 `series_options.SplitLineOpts`  
    linestyle_opts: LineStyleOpts = LineStyleOpts()  
)
显示分割线
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


# 分割线
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            # 显示X轴分割线
            xaxis_opts=opts.AxisOpts(
                splitline_opts=opts.SplitLineOpts(
                    is_show=True)),
            # 显示Y轴分割线
            yaxis_opts=opts.AxisOpts(
                splitline_opts=opts.SplitLineOpts(
                    is_show=True))
)
)

line.render_notebook()

 

SplitAreaOpts:分割区域配置项

参数
class SplitAreaOpts(  
    # 是否显示分隔区域。  
    is_show=True,   
    # 分隔区域的样式配置项,参考 `series_options.AreaStyleOpts`  
    areastyle_opts: AreaStyleOpts = AreaStyleOpts()  
)
显示分割区域
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


# 分割线
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            # 显示Y轴分割区域
            yaxis_opts=opts.AxisOpts(
                splitarea_opts=opts.SplitAreaOpts(is_show=True,
                                                  areastyle_opts=opts.AreaStyleOpts(opacity=1)))
)
)

line.render_notebook()

 

AreaStyleOpts:区域填充样式配置项

参数
class AreaStyleOpts(  
    # 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。  
    opacity: Optional[Numeric] = 0,  
    # 填充的颜色。  
    # 颜色可以使用 RGB 表示,比如 'rgb(128, 128, 128)',如果想要加上 alpha 通道表示不透明度,  
    # 可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'。  
    # 除了纯色之外颜色也支持渐变色和纹理填充  
    #   
    # 线性渐变,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分比,  
    # 如果 globalCoord 为 `true`,则该四个值是绝对的像素位置  
    # color: {  
    #    type: 'linear',  
    #    x: 0,  
    #    y: 0,  
    #    x2: 0,  
    #    y2: 1,  
    #    colorStops: [{  
    #        offset: 0, color: 'red' // 0% 处的颜色  
    #    }, {  
    #        offset: 1, color: 'blue' // 100% 处的颜色  
    #    }],  
    #    global: false // 缺省为 false  
    # }  
    #   
    # 径向渐变,前三个参数分别是圆心 x, y 和半径,取值同线性渐变  
    # color: {  
    #    type: 'radial',  
    #    x: 0.5,  
    #    y: 0.5,  
    #    r: 0.5,  
    #    colorStops: [{  
    #        offset: 0, color: 'red' // 0% 处的颜色  
    #    }, {  
    #        offset: 1, color: 'blue' // 100% 处的颜色  
    #    }],  
    #    global: false // 缺省为 false  
    # }  
    #   
    # 纹理填充  
    # color: {  
    #    image: imageDom, // 支持为 HTMLImageElement, HTMLCanvasElement,不支持路径字符串  
    #    repeat: 'repeat' // 是否平铺, 可以是 'repeat-x', 'repeat-y', 'no-repeat'  
    # }  
    color: Optional[str] = None  
)
 显示填充区域
 
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


# 分割线
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            # 显示Y轴分割区域
            yaxis_opts=opts.AxisOpts(
                splitarea_opts=opts.SplitAreaOpts(is_show=True,
                                                  areastyle_opts=opts.AreaStyleOpts(opacity='0.6')))
)
)

line.render_notebook()

 

颜色
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]


# 分割线
line = (Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            # 显示Y轴分割区域
            yaxis_opts=opts.AxisOpts(
                splitarea_opts=opts.SplitAreaOpts(is_show=True,
                                                  areastyle_opts=opts.AreaStyleOpts(opacity='0.1', color='grey')))
)
)

line.render_notebook()

 

EffectOpts:涟漪特效配置项

参数
class EffectOpts(  
    # 是否显示特效。  
    is_show: bool = True,  

    # 波纹的绘制方式,可选 'stroke' 和 'fill',Scatter 类型有效。  
    brush_type: str = "stroke",  

    # 动画中波纹的最大缩放比例,Scatter 类型有效。  
    scale: Numeric = 2.5,  

    # 动画的周期,秒数,Scatter 类型有效。  
    period: Numeric = 4,  

    # 特效标记的颜色  
    color: Optional[str] = None,  

    # 特效图形的标记。  
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle',   
    # 'diamond', 'pin', 'arrow', 'none'  
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。  
    symbol: Optional[str] = None,  

    # 特效标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示高和宽,  
    # 例如 [20, 10] 表示标记宽为 20,高为 10。  
    symbol_size: Optional[Numeric] = None,  

    # 特效尾迹的长度。取从 0 到 1 的值,数值越大尾迹越长。Geo 图设置 Lines 类型时有效。  
    trail_length: Optional[Numeric] = None,  
)
特效类型
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

# 可选 'stroke' 和 'fill'
effectScatter = (EffectScatter()
                 .add_xaxis(x_data)
                 .add_yaxis('stroke', y_data_1,
                            effect_opts=opts.EffectOpts(brush_type='stroke'))
                .add_yaxis('fill', y_data_2,
                            effect_opts=opts.EffectOpts(brush_type='fill'))
                 )

effectScatter.render_notebook()

 

范围&周期
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data_1 = [123, 153, 89, 107, 98, 23]
y_data_2 = [231, 321, 135, 341, 245, 167]

effectScatter = (EffectScatter()
                 .add_xaxis(x_data)
                 .add_yaxis('', y_data_1,
                            effect_opts=opts.EffectOpts(scale=10, period=5))
                .add_yaxis('', y_data_2,
                            effect_opts=opts.EffectOpts(scale=5, period=10))
                 )

effectScatter.render_notebook()

 

标记形状 
 
data = [['北京', '上海'], ['武汉', '深圳'], ['拉萨', '北京'], ['深圳', '上海']]

geo = (
    Geo()
    .add_schema(maptype="china")
    .add("", data, type_='lines',
         effect_opts=opts.EffectOpts(symbol='arrow'))
)
geo.render_notebook()

 

标记大小
data = [['北京', '上海'], ['武汉', '深圳'], ['拉萨', '北京'], ['深圳', '上海']]

geo = (
    Geo()
    .add_schema(maptype="china")
    .add("", data, type_='lines',
         effect_opts=opts.EffectOpts(symbol='circle', symbol_size=10))
)
geo.render_notebook()

 

标记点

MarkPointItem:标记点数据项
 
class MarkPointItem(  
    # 标注名称。  
    name: Optional[str] = None,  

    # 特殊的标注类型,用于标注最大值最小值等。可选:  
    # 'min' 最大值。  
    # 'max' 最大值。  
    # 'average' 平均值。  
    type_: Optional[str] = None,  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值,可以是   
    # 0(xAxis, radiusAxis),  
    # 1(yAxis, angleAxis),默认使用第一个数值轴所在的维度。  
    value_index: Optional[Numeric] = None,  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值。这可以是维度的直接名称,  
    # 例如折线图时可以是 x、angle 等、candlestick 图时可以是 open、close 等维度名称。  
    value_dim: Optional[str] = None,  

    # 标注的坐标。坐标格式视系列的坐标系而定,可以是直角坐标系上的 x, y,  
    # 也可以是极坐标系上的 radius, angle。例如 [121, 2323]、['aa', 998]。  
    coord: Optional[Sequence] = None,  

    # 相对容器的屏幕 x 坐标,单位像素。  
    x: Optional[Numeric] = None,  

    # 相对容器的屏幕 y 坐标,单位像素。  
    y: Optional[Numeric] = None,  

    # 标注值,可以不设。  
    value: Optional[Numeric] = None,  

    # 标记的图形。  
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle',   
    # 'diamond', 'pin', 'arrow', 'none'  
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。  
    symbol: Optional[str] = None,  

    # 标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,  
    # 例如 [20, 10] 表示标记宽为 20,高为 10。  
    symbol_size: Union[Numeric, Sequence] = None,  

    # 标记点样式配置项,参考 `series_options.ItemStyleOpts`  
    itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,  
)
MarkPointOpts:标记点配置项 
class MarkPointOpts(  
    # 标记点数据,参考 `series_options.MarkPointItem`  
    data: Sequence[Union[MarkPointItem, dict]] = None,  

    # 标记的图形。  
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle',   
    # 'diamond', 'pin', 'arrow', 'none'  
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。  
    symbol: Optional[str] = None,  

    # 标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,  
    # 例如 [20, 10] 表示标记宽为 20,高为 10。  
    # 如果需要每个数据的图形大小不一样,可以设置为如下格式的回调函数:  
    # (value: Array|number, params: Object) => number|Array  
    # 其中第一个参数 value 为 data 中的数据值。第二个参数 params 是其它的数据项参数。  
    symbol_size: Union[None, Numeric] = None,  

    # 标签配置项,参考 `series_options.LabelOpts`  
    label_opts: LabelOpts = LabelOpts(position="inside", color="#fff"),  
)
 特殊值标记
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 特殊值标记
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data)
    .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="最小值"),
                opts.MarkPointItem(type_="average", name="平均值"),
            ]))
)

bar.render_notebook()

 

 自定义标记点
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 三种定位方式如下
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data)
    .set_series_opts(
        # 为了不影响标记点,这里把标签关掉
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(
            data=[
                # 根据坐标定位
                opts.MarkPointItem(coord=['Xiaomi', 150], name="坐标"),
                # 根据像素值定位
                opts.MarkPointItem(x=200, y=160, name="像素值"),
                # 设置显示的value
                opts.MarkPointItem(coord=[4, 150], name="设置value", value='hi'),
            ]))
)

bar.render_notebook()

 

指定维度
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 特定维度上的特殊值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data)
    .set_series_opts(
        # 为了不影响标记点,这里把标签关掉
        label_opts=opts.LabelOpts(is_show=False),
        markpoint_opts=opts.MarkPointOpts(
            data=[
                opts.MarkPointItem(type_="max", name="x轴最大", value_index=0),
                opts.MarkPointItem(type_="max", name="y轴最大", value_index=1)
            ]))
)

bar.render_notebook()

 标记线

MarkLineItem-标记线数据项
class MarkLineItem(  
    # 标注名称。  
    name: Optional[str] = None,  

    # 特殊的标注类型,用于标注最大值最小值等。可选:  
    # 'min' 最大值。  
    # 'max' 最大值。  
    # 'average' 平均值。  
    type_: Optional[str] = None,  

    # 相对容器的屏幕 x 坐标,单位像素。  
    x: Union[str, Numeric, None] = None,  

    # 相对容器的屏幕 y 坐标,单位像素。  
    y: Union[str, Numeric, None] = None,  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值,可以是   
    # 0(xAxis, radiusAxis),  
    # 1(yAxis, angleAxis),默认使用第一个数值轴所在的维度。  
    value_index: Optional[Numeric] = None,  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值。这可以是维度的直接名称,  
    # 例如折线图时可以是 x、angle 等、candlestick 图时可以是 open、close 等维度名称。  
    value_dim: Optional[str] = None,  

    # 起点或终点的坐标。坐标格式视系列的坐标系而定,可以是直角坐标系上的 x, y,  
    # 也可以是极坐标系上的 radius, angle。  
    coord: Optional[Sequence] = None,  

    # 终点标记的图形。  
    # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle',  
    #  'diamond', 'pin', 'arrow', 'none'  
    # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。  
    symbol: Optional[str] = None,  

    # 标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,  
    # 例如 [20, 10] 表示标记宽为 20,高为 10。  
    symbol_size: Optional[Numeric] = None,  
)
MarkLineOpts:标记线配置项
class MarkLineOpts(  
    # 图形是否不响应和触发鼠标事件,默认为 false,即响应和触发鼠标事件。  
    is_silent: bool = False,  

    # 标记线数据,参考 `series_options.MarkLineItem`  
    data: Sequence[Union[MarkLineItem, dict]] = None,  

    # 标线两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定,具体格式见 data.symbol。  
    symbol: Optional[str] = None,  

    # 标线两端的标记大小,可以是一个数组分别指定两端,也可以是单个统一指定。  
    symbol_size: Union[None, Numeric] = None,  

    # 标线数值的精度,在显示平均值线的时候有用。  
    precision: int = 2,  

    # 标签配置项,参考 `series_options.LabelOpts`  
    label_opts: LabelOpts = LabelOpts(),  

    # 标记线样式配置项,参考 `series_options.LineStyleOpts`  
    linestyle_opts: Union[LineStyleOpts, dict, None] = None,  
)
特殊值标记
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 特定维度上的特殊值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data)
    .set_series_opts(
        # 为了不影响标记点,这里把标签关掉
        label_opts=opts.LabelOpts(is_show=False),
        markline_opts=opts.MarkLineOpts(
            data=[
                opts.MarkLineItem(type_="min", name="最小值"),
                opts.MarkLineItem(type_="max", name="最大值"),
                opts.MarkLineItem(type_="average", name="平均值")
            ]))
)

bar.render_notebook()

 

自定义标记线
# 虚假数据
x_data = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu']
y_data = [123, 153, 89, 107, 98, 23]

# 特定维度上的特殊值
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis('', y_data)
    .set_series_opts(
        # 为了不影响标记点,这里把标签关掉
        label_opts=opts.LabelOpts(is_show=False),
        markline_opts=opts.MarkLineOpts(
            data=[
                opts.MarkLineItem(x="Xiaomi", name="x=xiaomi"),
                opts.MarkLineItem(y=100, name="y=100")
            ]))
)

bar.render_notebook()

 

标记区域
MarkAreaItem-标记区域数据项
class MarkAreaItem(  
    # 区域名称, 仅仅就是一个名称而已  
    name: Optional[str] = None,  

    # 特殊的标注类型,用于标注最大值最小值等。  
    # 'min' 最大值。  
    # 'max' 最大值。  
    # 'average' 平均值。  
    type_: Sequence[Optional[str], Optional[str]] = (None, None),  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值,可以是 0(xAxis, radiusAxis),1(yAxis, angleAxis)。  
    # 默认使用第一个数值轴所在的维度。  
    value_index: Sequence[Optional[Numeric], Optional[Numeric]] = (None, None),  

    # 在使用 type 时有效,用于指定在哪个维度上指定最大值最小值。  
    # 这可以是维度的直接名称,例如折线图时可以是 x、angle 等、candlestick 图时可以是 open、close 等维度名称。  
    value_dim: Sequence[Optional[str], Optional[str]] = (None, None),  

    # 相对容器的屏幕 x 坐标,单位像素,支持百分比形式,例如 '20%'。  
    x: Sequence[Union[str, Numeric, None], Union[str, Numeric, None]] = (None, None),  

    # 相对容器的屏幕 y 坐标,单位像素,支持百分比形式,例如 '20%'。  
    y: Sequence[Union[str, Numeric, None], Union[str, Numeric, None]] = (None, None),  

    # 标签配置项,参考 `series_options.LabelOpts`  
    label_opts: Union[LabelOpts, dict, None] = None,  

    # 该数据项区域的样式,起点和终点项的 itemStyle 会合并到一起。参考 `series_options.ItemStyleOpts`  
    itemstyle_opts: Union[ItemStyleOpts, dict, None] = None,  
)
MarkAreaOpts-标记区域配置项
class MarkAreaOpts(  
    # 图形是否不响应和触发鼠标事件,默认为 False,即响应和触发鼠标事件。  
    is_silent: bool = False,  

    # 标签配置项,参考 `series_options.LabelOpts`  
    label_opts: LabelOpts = LabelOpts(),  

    # 标记区域数据,参考 `series_options.MarkAreaItem`  
    data: Sequence[Union[MarkAreaItem, dict]] = None,  
)
标记区域
# 虚假数据
date_list = ['10月{}日'.format(i) for i in range(1, 32)]
data = [random.randint(10, 100) for _ in date_list]

line = (Line()
        .add_xaxis(date_list)
        .add_yaxis('', data)
        .set_series_opts(markarea_opts=opts.MarkAreaOpts(
            data=[
                opts.MarkAreaItem(name="十一黄金周", x=("10月1日", "10月7日")),
            ])
)
)

line.render_notebook()

 

 

现在是凌晨一点四十分,啊啊啊,弄完好累,如果对你学习pyecharts有帮助的话,动动发财小手点个赞吧。

有兴趣的小伙伴可以去看看原文链接,他还有一个从0开始美化图表

https://www.heywhale.com/mw/project/5eb7958f366f4d002d783d4a

 又是当fw的一天。。。。。。

 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 
 
 
 
 

 

 

 

 
 
 
 

 
 

 

 
 
 

 

 

 
 
 

 

 

 

 

 

 

 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值