当前位置: 首页 > 工具软件 > pyecharts > 使用案例 >

pyecharts 制图

赫连彬炳
2023-12-01

pyecharts 制图

制图前所做准备

  • 导入各类图的类

    柱状图、折线图、饼图、地图、词云

from pyecharts.charts import Bar, Line, Pie, Map, Grid,WordCloud
  • 导入图表配置类
from pyecharts import options
  • 主题配置
from pyecharts.globals import ThemeType

一、柱状图构建

1.创建图表对象

bar = Bar()

设置图表主题时使用:

bar = Bar(init_opts=options.InitOpts(theme=ThemeType.ROMANTIC))

2.添加x轴上和y轴上显示的数据

bar.add_xaxis(['abanana', 'appl', 'orange', 'peal'])

bar.add_yaxis('个数', [320, 875, 203, 100])

bar.add_yaxis('重量', [5000, 8500, 7500, 10000])

bar.add_yaxis('价格', [999, 888, 2999, 1999])

3.柱状图配置

1)全局配置

bar.set_global_opts(
    title_opts=options.TitleOpts(title='喵喵喵喵喵喵', subtitle='————今日数据',pos_left=400),
    # 配置图例
    legend_opts=options.LegendOpts(is_show=False),    # 默认是True   
    # 配置工具箱
    toolbox_opts=options.ToolboxOpts(is_show=True))

2)系列配置

bar.set_series_opts(
    # 设置数值的显示
    label_opts=options.LabelOpts(is_show=True, position='top', rotate=15, font_size=20, color='white'),
    # 添加标记点
    markpoint_opts=options.MarkPointOpts(data=[
        options.MarkPointItem(name='最大值', type_='max'),
        options.MarkPointItem(name='最小值', type_='min')	
    ])
)

二、折线图构建

1.创建图表对象

line = Line()

2.添加数据

line.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
line.add_yaxis('平均薪资', [9200, 8700, 8500, 7400, 8000],)
               # markline_opts=options.MarkLineOpts(data=[
                   # options.MarkLineItem(name='平均值', type_='average')]))  -  添加平均线
line.add_yaxis('学费', [18999, 21000, 22999, 19888, 18999])

3.折线图配置

line.set_series_opts(
    # 添加标记线
    markline_opts=options.MarkLineOpts(data=[
        options.MarkLineItem(name='平均值', type_='average')])
)

三、饼图构建

1.创建图表对象

pie = Pie()

2.添加数据

pie.add('销售额',
        [('手机',57890), ('耳机', 15362), ('手表', 9872), ('电脑', 78921)],
        # 设置空心
        radius=('30%', '70%'),  # radius 半径 前为中 后为外
        # 根据数据的大小设置每一部分的大小
        rosetype='radius'
        )

3.饼图配置

pie.set_global_opts(
    # 隐藏图例
    legend_opts=options.LegendOpts(is_show=False),
    # 设置标题
    title_opts=options.TitleOpts(title='某商城电子产品销售情况', subtitle='销售额'),

)
pie.set_series_opts(
    # 设置文字信息的显示格式:{b}   -   名称 {d}  -   百分比的比值
    label_opts=options.LabelOpts(formatter='{b}({d})%')
)

四、地图构建

1.创建图表对象

map1 = Map()

2.添加数据

map1.add(
    '新增人数',
    [('China', 173), ('Libya', 309), ('Algeria', 26), ('Korea', 778), ('Japan', 56), ('Russia', 435), ('Australia', 1829)],
    'world',
    min_scale_limit=0.35,
    max_scale_limit=2
)

3.地图常用配置

map1.set_global_opts(
    # 使用布尔值隐藏图例
    legend_opts=options.LegendOpts(is_show=False),
    visualmap_opts=options.VisualMapOpts(is_show=True, max_=2000, is_piecewise=True)
)

五、词云图

1.创建图表

wc = WordCloud()

2.添加数据

wc.add(
    '游戏人数',
    [('王者荣耀', 28384), ('CS Go', 6782), ('和平精英', 12930), ('英雄联盟', 30092),
     ('开心消消乐', 829), ('刀塔', 1023), ('CF', 567), ('红色警戒', 129), ('魔兽', 90),
     ('保卫萝卜', 50), ('羊了个羊', 6728), ('植物大战僵尸', 369), ('原神', 5093), ('阴阳师', 9),
     ('找你妹', 809), ('俄罗斯方块', 1092), ('狼人杀', 4092), ('你画我猜', 9), ('QQ飞车', 912),
     ('QQ炫舞', 120), ('QQ农场', 34), ('炉石传说', 90), ('我的世界', 5362), ('部落冲突', 23),
     ('传奇', 22)
     ],
    shape='cardioid',
    word_size_range=(10,30)     # 调整词云大小
)

六、组合图表

1.创建Grid对象

grid = Grid(init_opts=options.InitOpts(
    # 设置放组合图的盒子的宽度和高度
    width='1500px',
    height='1000px'
))

2.添加需要组合在一起的图表对象

grid.add(bar, grid_opts=options.GridOpts(
    pos_left=100,
    pos_top=20,
    width=400,
    height=300
))

grid.add(line, grid_opts=options.GridOpts(
    pos_left=850,
    pos_top=400,
    width=400,
    height=300
))

grid.add(pie, grid_opts=options.GridOpts())

grid.add(map1, grid_opts=options.GridOpts(
))

grid.add(wc, grid_opts=options.GridOpts(
))

七.渲染图表

grid.render('tubiao/组合图.html')

八、将图表制成图片

from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

make_snapshot(snapshot, grid.render(), 'tubiao/组合.png')
 类似资料: