柱状图
基本柱状图
导入工具
from pyecharts.charts import Bar
from pyecharts import options
1.创建图表对象
bar = Bar()
2.添加x轴上和y轴上显示的数据
bar = Bar()
bar.add_xaxis(['AWP黑色魅影', 'M4A1夜无眠', 'AK墨岩', 'SSG 08抖枪', '锯齿爪刀外表生锈'])
bar.add_yaxis('价格', [230, 28, 30, 25, 1800])
bar.add_yaxis('货量', [160, 400, 567, 478, 99])
3.渲染图表,以及创建一个新文件夹来装生成的html文件
bar.render('files/bar.html')
注意:柱状图的常用配置
导入工具
from pyecharts.charts import Bar
from pyecharts import options
from pyecharts.globals import ThemeType
创建对象
bar = Bar(
init_opts=options.InitOpts(
theme=ThemeType.WHITE
)
)
添加数据
bar = Bar()
bar.add_xaxis(['AWP黑色魅影', 'M4A1夜无眠', 'AK墨岩', 'SSG 08抖枪', '锯齿爪刀外表生锈'])
bar.add_yaxis('价格', [230, 28, 30, 25, 1800])
bar.add_yaxis(
'货量',
[160, 400, 567, 478, 99],
markpoint_opts=options.MarkPointOpys(data=[
options.MarkPointItem(name='最小值', type_='min')
])
)
常见配置
(1)全局设置
bar.set_global_opts(
# 配置标题
title_opts=options.TitleOpts(title='主标题', subtitle='副标题', pos_left='30px'),
# 配置图例
legend_opts=options.LegendOpts(is_show=False),
# 配置工具箱
toolbox_opts=options.ToolboxOpts(is_show=False)
)
(2)系列配置
bar.set_series_opts(
# 设置数值的显示
# label_opts=options.LabelOpts(is_show=True, position='top', rotate=30, font_size=10, color='pink'),
# 添加标记点
markpoint_opts=options.MarkPointOpts(data=[
options.MarkPointItem(name='最大值', type_='max')
])
)
# 最小值一样操作
渲染
bar.render('files/bar.html')
折线图
和柱状图操作一样,先导入,创建,添加数据,配置,和渲染,然后将Bar换成Line
常见设置有所不同,比如系列配置,在添加数据后加相应代码标出某组数据平均值
line1 = Line()
line1.add_xaxis(['AWP黑色魅影', 'M4A1夜无眠', 'AK墨岩', 'SSG 08抖枪', '锯齿爪刀外表生锈'])
line1.add_yaxis('价格', [230, 28, 30, 25, 1800])
line1.add_yaxis(
'货量',
[160, 400, 567, 478, 99],
markline_opts=options.MarkLineOpts(data=[
options.MarkLineItem(name='平均值', type_='average')
])
)
全局配置,就在所有数据后面加相应代码标出所有数据平均值
line.set_series_opts(
# 添加标记线
markline_opts=options.MarkLineOpts(data=[
options.MarkLineItem(name='平均值', type_='average')
])
)
饼图
和柱状图操作一样,先导入,创建,添加数据,配置,和渲染,然后将Bar换成pie
添加数据时
pie.add(
'库存',
[('人物', 160), ('手枪', 50), ('狙击枪', 280), ('步枪', 80), ('刀', 1818)],
# 设置空心
radius=('30%', '70%'),
# 根据数据的大小设置每一部分半径的大小
rosetype='radius'
)
常见配置
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}%)')
)
地图
和柱状图操作一样,先导入,创建,添加数据,配置,和渲染,然后将Bar换成map
添加数据时
map.add(
'玩CSGO人数',
[('四川', 50000), ('重庆', 456), ('吉林', 4000), ('江苏', 3030), ('河南', 2087), ('西藏', 678)],
'china',
# 限制缩放倍数
min_scale_limit=0.45,
max_scale_limit=0.45,
)
map.set_global_opts(
legend_opts=options.LegendOpts(is_show=False),
visualmap_opts=options.VisualMapOpts(is_show=False, max_=2000, min_=0, is_piecewise=True)
)
常见配置
map.set_global_opts(
# 隐藏图例
legend_opts=options.LegendOpts(is_show=False),
visualmap_opts=options.VisualMapOpts(is_show=False, max_=2000, min_=0, is_piecewise=True)
)
map.set_series_opts(
label_opts=options.LabelOpts(is_show=False)
)
词云
和柱状图操作一样,先导入,创建,添加数据,和渲染,然后将Bar换成WordCloud
添加数据时
wc1.add(
'游戏人数',
[('王者荣耀', 28384), ('CSGO', 6782), ('和平精英', 12930), ('英雄联盟', 30092), ('开心消消乐', 829),
('刀塔', 1023), ('CF', 567), ('红色警戒', 129), ('魔兽', 90), ('保卫萝卜', 50), ('羊了个羊', 6728),
('植物大战僵尸', 369), ('原神', 5093), ('阴阳师', 9), ('找你妹', 809), ('俄罗斯方块', 1092),
('狼人杀', 4092), ('你画我猜', 9), ('QQ飞车', 912), ('QQ炫舞', 120), ('死神VS火影', 56789), ('生死狙击', 11122),
('坦克大战', 32312), ('魂斗罗', 32123), ('超级马里奥', 21321)
],
shape='cardioid',
pos_left=200, # 设置图表位置
pos_top=-60
)
组合图表
from pyecharts.charts import Bar, Line, Pie, Map, WordCloud, Grid
from pyecharts import options
bar1 = Bar()
bar1.add_xaxis(['AWP黑色魅影', 'M4A1夜无眠', 'AK墨岩', 'SSG 08抖枪', '锯齿爪刀外表生锈'])
bar1.add_yaxis('价格', [230, 28, 30, 25, 1800])
bar1.add_yaxis('货量', [160, 400, 567, 478, 99])
bar1.set_global_opts(legend_opts=options.LegendOpts(is_show=False))
line1 = Line()
line1.add_xaxis(['AWP黑色魅影', 'M4A1夜无眠', 'AK墨岩', 'SSG 08抖枪', '锯齿爪刀外表生锈'])
line1.add_yaxis('价格', [230, 28, 30, 25, 1800])
line1.add_yaxis('货量', [160, 400, 567, 478, 99])
line1.set_global_opts(legend_opts=options.LegendOpts(is_show=False))
pie1 = Pie()
pie1.add(
'库存',
[('人物', 160), ('手枪', 50), ('狙击枪', 280), ('步枪', 80), ('刀', 1818)],
radius=(50, 130),
rosetype='radius', # 调整图表位置
center=(1150, 180)
)
pie1.set_global_opts(
legend_opts=options.LegendOpts(is_show=False)
)
pie1.set_series_opts(
label_opts=options.LabelOpts(formatter='{b} ({d}%)')
)
map4 = Map()
map4.add(
'玩CSGO人数',
[('四川', 50000), ('重庆', 456), ('吉林', 4000), ('江苏', 3030), ('河南', 2087), ('西藏', 678)],
'china',
min_scale_limit=0.45,
max_scale_limit=0.45, # 调整图表比例和位置
center=(50, 40)
)
map4.set_global_opts(
legend_opts=options.LegendOpts(is_show=False),
visualmap_opts=options.VisualMapOpts(is_show=False, max_=2000, min_=0, is_piecewise=True)
)
wc1 = WordCloud()
wc1.add(
'游戏人数',
[('王者荣耀', 28384), ('CSGO', 6782), ('和平精英', 12930), ('英雄联盟', 30092), ('开心消消乐', 829),
('刀塔', 1023), ('CF', 567), ('红色警戒', 129), ('魔兽', 90), ('保卫萝卜', 50), ('羊了个羊', 6728),
('植物大战僵尸', 369), ('原神', 5093), ('阴阳师', 9), ('找你妹', 809), ('俄罗斯方块', 1092),
('狼人杀', 4092), ('你画我猜', 9), ('QQ飞车', 912), ('QQ炫舞', 120), ('死神VS火影', 56789), ('生死狙击', 11122),
('坦克大战', 32312), ('魂斗罗', 32123), ('超级马里奥', 21321)
],
shape='cardioid',
pos_left=200, # 调整图表位置
pos_top=-60
)
# 1. 创建Grid对象
grid = Grid(init_opts=options.InitOpts(
width='1500px', # 设置放组合图的盒子的宽度和高度
height='1000px'
))
# 2.添加需要组合在一起的各个图表对象
grid.add(bar1, grid_opts=options.GridOpts(
pos_left=100,
pos_top=20,
width=400,
height=250
))
grid.add(line1, grid_opts=options.GridOpts(
pos_left=100,
pos_top=400,
width=400,
height=250
))
grid.add(pie1, grid_opts=options.GridOpts())
grid.add(map4, grid_opts=options.GridOpts())
grid.add(wc1, grid_opts=options.GridOpts())
# 3.将图表制成图片
# from pyecharts.render import make_snapshot
# from snapshot_selenium import snapshot
# make_snapshot(snapshot, grid.render(), 'files/组合图.png')
# 渲染组合图
grid.render('files/组合图作业.html')