Pyecharts制图
标题一、柱状图
导入柱状图的类
from pyecharts.charts import Bar
导入图标配置类
from pyecharts import options
---------------------基本的柱状图-----------------------
# 1.创建图标对象
bar = Bar()
# 2.添加x轴上和y轴上显示的数据
bar.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
bar.add_yaxis('全年招生人数', [320, 875, 904, 203, 100])
bar.add_yaxis('平均薪资', [15000, 13000, 12000, 12500, 10000])
bar.add_yaxis('应届毕业人数', [320, 850, 855, 203, 100])
bar.add_yaxis('学费', [18990, 21000, 22999, 19888, 18990])
# 3.渲染图表
bar.render('files/bar1.html')
-----------------------柱状图的常用设置------------------------
# 1.创建图标对象
from pyecharts.globals import ThemeType
bar = Bar(
# 设置整个图表的主题
init_opts=options.InitOpts(
theme=ThemeType.WONDERLAND
)
)
# 2.添加X轴上和y轴上显示的数据
bar.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
bar.add_yaxis('全年招生人数', [320, 875, 904, 203, 100])
bar.add_yaxis('平均薪资', [15000, 13000, 12000, 12500, 10000])
bar.add_yaxis('应届毕业人数', [320, 850, 855, 203, 100])
bar.add_yaxis('学费',
[18990, 21000, 22999, 19888, 18990],
markpoint_opts=options.MarkPointOpts(data=[
options.MarkPointItem(name='最小值', type_='min')
])
)
# 3.柱状图常见配置
# 1)全局配置
bar.set_global_opts(
# 配置标题
title_opts=options.TitleOpts(title='千锋各科数据', subtitle='2022/11/22', pos_left=400),
# 图例配置
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=20, font_size=10, color='pink'),
# 添加标记点
markpoint_opts=options.MarkPointOpts(data=[
options.MarkPointItem(name='最大值', type_='max'),
# options.MarkPointItem(name='最小值', type_='min'),
])
)
# 4.渲染图表
bar.render('files/bar1.html')
二、折线图
from pyecharts.charts import Line
from pyecharts import options
from pyecharts.globals import ThemeType
# 1.创建图标对象
line = Line(
init_opts=options.InitOpts(theme=ThemeType.DARK)
)
# 2.添加数据
line.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
line.add_yaxis('全年招生人数', [320, 875, 904, 203, 100])
line.add_yaxis('平均薪资', [15000, 13000, 12000, 12500, 10000])
# 3.折线图特定的配置
line.set_series_opts(
# 添加标记线
markline_opts=options.MarkLineOpts(data=[
options.MarkLineItem(name='平均值', type_='average')
])
)
# 4.渲染图表
line.render('files/line.html')
三、饼图
from pyecharts.charts import Pie
from pyecharts import options
from pyecharts.globals import ThemeType
# 1.创建图表对象
pie = Pie()
# 2.添加数据
pie.add('销售额',
[('手机', 57890), ('耳机', 12560), ('手表', 12890), ('电脑', 6820)],
# 设置空心
radius=('30%', '70%'),
# 根据数据的大小设置每一部分半径的大小
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}%)')
)
# 4.渲染图表
pie.render('files/pie.html')
四、地图
from pyecharts.charts import Map
from pyecharts import options
# ---------------------1.中国地图----------------------
# 1.创建图表对象
map1 = Map()
# 2.添加数据
map1.add(
'新增人数',
[('四川', 173), ('河北', 300), ('吉林', 28), ('新疆', 800), ('重庆', 1500), ('广东', 1800)],
'china',
# 限制缩放倍数
min_scale_limit=0.8,
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, min_=0, is_piecewise=True)
)
# 4.渲染图表
map1.render('files/中国地图.html')
# ---------------------2.四川省地图----------------------
# 1.创建图表对象
map1 = Map()
# 2.添加数据
map1.add(
'新增人数',
[('成都市', 173), ('绵阳市', 300), ('内江市', 28), ('乐山市', 800), ('眉山市', 1500), ('德阳市', 1800)],
'四川',
# 限制缩放倍数
min_scale_limit=0.8,
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, min_=0, is_piecewise=True)
)
# 4.渲染图表
map1.render('files/四川地图.html')
# ---------------------3.世界地图----------------------
# 1.创建图表对象
map1 = Map()
# 2.添加数据
map1.add(
'新增人数',
[('China', 173), ('Russia', 300), ('Greenland', 28), ('Libya', 800), ('Mongolia', 1500), ('Finland', 1800)],
'world',
# 限制缩放倍数
min_scale_limit=0.8,
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, min_=0, is_piecewise=True)
)
# 4.渲染图表
map1.render('files/世界地图.html')
# ---------------------4.重庆市地图----------------------
# 1.创建图表对象
map1 = Map()
# 2.添加数据
map1.add(
'新增人数',
[('丰都县', 173), ('忠县', 300), ('垫江县', 28), ('荣昌县', 800), ('合川区', 1500), ('万州区', 1800)],
'重庆',
# 限制缩放倍数
min_scale_limit=0.8,
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, min_=0, is_piecewise=True)
)
# 4.渲染图表
map1.render('files/重庆市地图.html')
五、词云
from pyecharts.charts import WordCloud
from pyecharts import options
# 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), ('我的世界', 5621), ('部落冲突', 213)
],
shape='diamond',
word_size_range=(10, 80)
)
# 3. 渲染图表
wc.render('files/词云地图.html')
六、组合图
from pyecharts.charts import Bar, Line, Pie, Map, WordCloud, Grid
from pyecharts import option
# 柱状图
bar = Bar()
bar.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
bar.add_yaxis('全年招生人数', [320, 875, 804, 203, 100])
bar.add_yaxis('平均薪资', [9200, 8700, 8500, 7400, 8000])
bar.set_global_opts(legend_opts=options.LegendOpts(is_show=False))
# 折线图
line = Line()
line.add_xaxis(['Python', 'Java', 'H5', 'UI/UE', '物联网'])
line.add_yaxis('全年招生人数', [320, 875, 804, 203, 100])
line.add_yaxis('平均薪资', [9200, 8700, 8500, 7400, 8000])
line.set_global_opts(legend_opts=options.LegendOpts(is_show=False))
# 饼图
pie = Pie()
pie.add(
'销售额',
[('手机', 57890), ('耳机', 15362), ('手表', 9872), ('电脑', 78921)],
# 控制饼图大小
radius=(66, 100),
rosetype='radius',
# 通过控制圆心来控制图的位置
center=(1080, 180)
)
pie.set_global_opts(
legend_opts=options.LegendOpts(is_show=False)
)
pie.set_series_opts(
label_opts=options.LabelOpts(formatter='{b}({d}%)')
)
# 地图
map1 = Map()
map1.add(
'新增人数',
[('四川', 173), ('河北', 309), ('吉林', 26), ('新疆', 778), ('福建', 56), ('重庆', 435), ('广东', 1829)],
'china',
# 控制地图大小
min_scale_limit=0.45,
max_scale_limit=0.45,
# 设置地图的位置(圆心在右上角)(注意缩放比例的问题)
center=(155, 43)
)
map1.set_global_opts(
legend_opts=options.LegendOpts(is_show=False),
visualmap_opts=options.VisualMapOpts(is_show=False, max_=2000, min_=0, is_piecewise=True)
)
map1.set_series_opts(
label_opts=options.LabelOpts(color='rgb(128,128,128)')
)
# 词云
# 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), ('我的世界', 5621), ('部落冲突', 213)
],
shape='diamond',
word_size_range=(18, 30)
)
# 3. 渲染图表
wc.render('files/词云地图.html')
# -----------------组合五个图---------------------------
# 1.创建Grid对象
grid =Grid(init_opts=options.InitOpts(
# 设置放组合图的宽度和高度
width='1500px',
height='1000px'
))
# 2.添加需要组合在一起的各个图表对象
grid.add(bar, grid_opts=options.GridOpts(
# 图的位置
pos_left=80,
pos_top=20,
# 图的大小
width=500,
height=300
))
grid.add(line, grid_opts=options.GridOpts(
# 图的位置
pos_left=1000,
pos_top=400,
# 图的大小
width=450,
height=230
))
grid.add(pie, grid_opts=options.GridOpts()) # 这里设置图的大小和位置无效
grid.add(map1, grid_opts=options.GridOpts()) # 这里设置图的大小和位置无效
grid.add(wc, grid_opts=options.GridOpts())
# 3.渲染组合图
grid.render('files/组合.html')
# 将图表导png
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
make_snapshot(snapshot, grid.render(), 'files/组合.png')