导入各类图的类
柱状图、折线图、饼图、地图、词云
from pyecharts.charts import Bar, Line, Pie, Map, Grid,WordCloud
from pyecharts import options
from pyecharts.globals import ThemeType
bar = Bar()
设置图表主题时使用:
bar = Bar(init_opts=options.InitOpts(theme=ThemeType.ROMANTIC))
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])
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')
])
)
line = Line()
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])
line.set_series_opts(
# 添加标记线
markline_opts=options.MarkLineOpts(data=[
options.MarkLineItem(name='平均值', type_='average')])
)
pie = Pie()
pie.add('销售额',
[('手机',57890), ('耳机', 15362), ('手表', 9872), ('电脑', 78921)],
# 设置空心
radius=('30%', '70%'), # radius 半径 前为中 后为外
# 根据数据的大小设置每一部分的大小
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})%')
)
map1 = Map()
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
)
map1.set_global_opts(
# 使用布尔值隐藏图例
legend_opts=options.LegendOpts(is_show=False),
visualmap_opts=options.VisualMapOpts(is_show=True, max_=2000, is_piecewise=True)
)
wc = WordCloud()
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) # 调整词云大小
)
grid = Grid(init_opts=options.InitOpts(
# 设置放组合图的盒子的宽度和高度
width='1500px',
height='1000px'
))
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')