让你的数据更好看——pyecharts图表的自动生成

今天我又是一个 lsp,分享二次元老婆的第二天

在这里插入图片描述

前言

当我在慵懒这条路上越走越远的时候,一个个花花绿绿的图表又跳了出来,这这这,这可让我如何是好啊!!!我可是一个永远走在慵懒路上的人,岂能因为一个漂亮图表就心动???

废话少说,不能只是让我心动,我们一起来心动!!!

第一个图表文件(柱状图)

首先我们需要先安装一个库(pyecharts):pip install pyecharts -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

我们来定义一个柱状图创建场景,一至六班为横坐标,每个班级的男生人数为纵坐标

此时我们只需要写明头文件:from pyecharts.charts import Bar,此代码的意义是从 pyecharts 库的 charts 组件中导入 Bar (柱状图) 类

我们新建工程项目(xiaohan1),新建 python 文件(part1.py)

在这里插入图片描述

part1.py 文件如下:

from pyecharts.charts import Bar
# 从 pyecharts 库的 charts 组件中导入 Bar (柱状图) 类

# 1. 实例化类对象
bar = Bar()

# 2. 准备图表数据 (横纵坐标内容)
class_list = ["一班", "二班", "三班", "四班", "五班"]
boy_list = [20, 23, 33, 30, 17]

# 3. 关联图表和数据
bar.add_xaxis(class_list)
bar.add_yaxis("男生人数", boy_list)

# * 数据渲染--生成数据
bar.render("图表\\男生柱状图.html")

代码 class_list = ["一班", "二班", "三班", "四班", "五班"],是一个列表(其中有多个字符串数据),横坐标数据若是字符串类型最好加上单(双)引号,代码 bar.add_yaxis("男生人数", boy_list),第一个参数代表纵坐标表示的对象(男生人数),第二个参数表示相对应的纵坐标数值大小(如第一个数值 20 对应一班男生的人数),代码 bar.render("图表\\男生柱状图.html"),可以将图表生成为一个后缀为 html 的文件(浏览器打开的文件)

男生柱状图.html 文件在浏览器打开的过程如下:

  1. 右键 男生柱状图.html 文件
  2. 找到名为 打开于 的选项并点开
  3. 找到名为 浏览器 的选项并点开
  4. 然后选择一个浏览器即可

在这里插入图片描述

男生柱状图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述
但是,但是!!!很严肃的一个话题哈,这六个班级只有男孩子嘛???奇奇怪怪的,女孩子哪去了,这么稀有的动物,一个班级怎么能没有!!!于是我来修改一下 part1.py 文件

part1.py 文件新增及修改内容如下:

# 新增内容
# 2. 准备图表数据 (横纵坐标内容)
girl_list = [30, 27, 17, 20, 33]

# 3. 关联图表和数据
bar.add_yaxis("女生人数", girl_list)

# 修改内容 
# * 数据渲染--生成数据
bar.render("图表\\男女生柱状图.html")

男女生柱状图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述
相信大家会考虑柱形的排版及对称问题(横坐标为什么一定落在相对应的二个柱形中间),其实我也不知道,哈哈哈!!!若是你们知道,就可以告诉我,一定感谢!!!

图表的全局选项设置

part1.py 文件新增内容如下:

# 头文件
from pyecharts import options

# 4.1 全局设置
bar.set_global_opts(
    # 设置标题信息
    title_opts=options.TitleOpts(title="一年级一班到六班", subtitle="男生人数和女生人数"),
    # 显示工具栏
    toolbox_opts=options.ToolboxOpts())

头文件 from pyecharts import options 表示从 pyecharts 库中导入 options 模块,代码 bar.set_global_opts(),表示对实例化柱状图对象设置全局选项,代码 title_opts=options.TitleOpts(title="一年级一班到六班", subtitle="男生人数和女生人数"),表示设置标题(title_opts),且需要调用 options 模块的 TitleOpts 方法TitleOpts 方法有二个参数,第一个表示标题(title),第二个表示副标题(subtitle)

男女生柱状图.html 文件设置全局选项经浏览器渲染后的结果如下:

在这里插入图片描述

可以发现左上角多了二栏(标题和副标题),右上角多了工具栏,至于有哪些工具及工具有什么功能则需要自己动手来实践了

图表的系列(局部)选项设置

part1.py 文件新增内容如下:

# 4.2 系列设置
bar.set_series_opts(
    # 设置柱形顶部数值是否显示
    label_opts=options.LabelOpts(is_show=False),
    # 添加标记点
    markpoint_opts=options.MarkPointOpts(data=[
        options.MarkPointItem(type_="min", name="最小值"),
        options.MarkPointItem(type_="max", name="最大值")
    ]))

代码 bar.set_series_opts() 表示设置系列(局部)选项,代码 label_opts=options.LabelOpts(is_show=False),表示设置标签(label_opts),且需要调用 options 模块的 TitleOpts 方法LabelOpts 方法有一个参数,表示数值是否显示,代码 markpoint_opts=options.MarkPointOpts(data=[ options.MarkPointItem(type_="min", name="最小值"), options.MarkPointItem(type_="max", name="最大值") ]),表示设置标记(markpoint_opts),且需要调用 options 模块的 MarkPointOpts 方法MarkPointOpts 方法有一个参数(data=[options.MarkPointItem(type_="min", name="最小值"), options.MarkPointItem(type_="max", name="最大值")],参数被一个列表赋值,列表里用方法 options.MarkPointItem 来设置标记,且它有二个参数,第一个是属性(min 或 max),第二个是显示文本(即鼠标放在当前标记的时候特殊的文字)

男女生柱状图.html 文件设置局部选项经浏览器渲染后的结果如下:

在这里插入图片描述
可以看见在二类柱形中分别出现了最大值和最小值的标记,且当鼠标放在红色柱形(标记为33的圈圈上时),显示了文本最大值(特殊文字)

我们来定义一个饼状图创建场景,武汉市早中晚及凌晨某超市人数流动量,占比为饼图的大小

此时我们只需要写明头文件:from pyecharts.charts import Pie,此代码的意义是从 pyecharts 库的 charts 组件中导入 Pie (饼状图) 类

在工程项目(xiaohan1)下,新建 python 文件(part2.py)

part2.py 文件如下:

from pyecharts.charts import Pie

# 1. 实例化饼状图对象
pie = Pie()

# 2. 准备数据
pie_list = [("早上", 1200), ("中午", 2400), ("晚上", 3700), ("凌晨", 900)]

# 3. 创建关联
pie.add(
        # 设置系列名称
        series_name="人数",
        # 设置需要展示的数据
        data_pair=pie_list)

# * 数据渲染--生成数据
pie.render("图表\\武汉早中晚及凌晨人数流量.html")

代码 pie_list = [("早上", 1200), ("中午", 2400), ("晚上", 3700), ("凌晨", 900)],里面有四个元组,每个元组对应一个饼,代码 pie.add(series_name="人数",data_pair=pie_list),第一个参数代表饼图显示的名字,相当于柱状图的纵坐标,第二个参数代表导入的数据

武汉早中晚及凌晨人数流量.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述
当鼠标放在中午这块饼上面的时候,可以发现,有饼图的名字(人数)和传入的数据(中午:2400)

图表的二个小方法

年轻人不讲武德!马上给大家看几个刺激的!!!

第一个小方法,使饼成为饼环

part2.py 文件修改内容如下:

# 修改内容
# 3. 创建关联
pie.add(
        # 设置系列名称
        series_name="人数",
        # 设置需要展示的数据
        data_pair=pie_list,
        # 设置圆环空心部分和非空心部分的比例
        radius=["30%", "70%"])

武汉早中晚及凌晨人数流量.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述
第二个小方法,使每个饼的比例不一样大

part2.py 文件修改内容如下:

# 修改内容
# 3. 创建关联
pie.add(
        # 设置系列名称
        series_name="人数",
        # 设置需要展示的数据
        data_pair=pie_list,
        # 设置圆环空心部分和非空心部分的比例
        radius=["30%", "70%"],
        # 设置饼是不规则的
        rosetype="radius")

武汉早中晚及凌晨人数流量.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

图表的系列(局部)选项设置

我们来设置一下饼的所占百分比

part2.py 文件新增内容如下:

# 头文件
from pyecharts import options

# 新增内容
# 4. 局部设置
pie.set_series_opts(label_opts=options.LabelOpts(formatter="{b}:{d}%"))

头文件 from pyecharts import options 表示从 pyecharts 库中导入 options 模块,代码 pie.set_series_opts(label_opts=options.LabelOpts(formatter="{b}:{d}%")) 表示设置局部选项(set_series_opts),label_opts 表示设置标签,利用 options 模块,且需要调用 LabelOpts 方法,此方法有一个参数,代表格式, {b} 表示导入的元数据(早上…),{d}% 表示百分比

武汉早中晚及凌晨人数流量.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

第三个图表文件(折线图)

沿用第一个图表文件(柱状图)的场景

此时我们只需要写明头文件:from pyecharts.charts import Line,此代码的意义是从 pyecharts 库的 charts 组件中导入 Line (折线图) 类

在工程项目(xiaohan1)下,新建 python 文件(part3.py)

part3.py 文件如下:

from pyecharts.charts import Line

# 1. 实例化对象
line = Line()

# 2. 准备图表数据 (横纵坐标内容)
class_list = ["一班", "二班", "三班", "四班", "五班"]
boy_list = [20, 23, 33, 30, 17]
girl_list = [30, 27, 17, 20, 33]

# 3. 创建关联
line.add_xaxis(class_list)
line.add_yaxis("男生", boy_list)
line.add_yaxis("女生", girl_list)

# * 数据渲染--生成数据
line.render("图表\\男女生折线图.html")

男女生折线图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

图表的系列(局部)的局部选项设置

第一个局部设置:让男生的折线平滑

part3.py 文件修改内容如下:

# 修改内容
# 3. 创建关联
line.add_yaxis("男生", boy_list, is_smooth=True)

男女生折线图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

第二个局部设置:给女生数值增加平均值线

part3.py 文件新增及修改内容如下:

# 新增内容
# 头文件
from pyecharts import options

# 修改内容
# 3. 创建关联
line.add_yaxis("女生", girl_list, markline_opts=options.MarkLineOpts(
                data=[options.MarkLineItem(type_="average")]))

男女生折线图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

第三个局部设置:给男生数值增加最大值点

part3.py 文件新增及修改内容如下:

# 新增内容
# 头文件
from pyecharts import options

# 修改内容
# 3. 创建关联
line.add_yaxis("男生", boy_list, is_smooth=True, markpoint_opts=options.MarkPointOpts(
                data=[options.MarkPointItem(type_="max")]))

男女生折线图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

图表的系列(局部)的选项设置

局部设置:给男生女生都增加中位数线且给它命名为中位数

part3.py 文件新增及修改内容如下:

# 新增内容
# 头文件
from pyecharts import options

# 4. 局部设置
line.set_series_opts(markline_opts=options.MarkLineOpts(data=[options.MarkLineItem(type_="median", name="中位数")]))

男女生折线图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

第四个图表文件(地图)

我们来定义一个地图创建场景(各省市的疫情人数)

此时我们只需要写明头文件:from pyecharts.charts import Map,此代码的意义是从 pyecharts 库的 charts 组件中导入 Map (地图) 类

在工程项目(xiaohan1)下,新建 python 文件(part4.py)

part4.py 文件如下

from pyecharts.charts import Map

# 1. 实例化类对象
map1 = Map()

# 2. 准备数据
num_list = [("湖北", 2100), ("四川", 300), ("广东", 900), ("河北", 1200)]

# 3. 创建关联
map1.add("疫情数据", num_list, "china")

# * 数据渲染--生成数据
map1.render("图表\\疫情分布地图.html")

疫情分布地图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

图表的全局选项设置

part3.py 文件新增内容如下:

# 新增内容
# 头文件
from pyecharts import options

# 4. 全局设置
map1.set_global_opts(
    # 设置颜色标记范围
    visualmap_opts=options.VisualMapOpts(max_=2000, is_piecewise=True),
    # 隐藏顶部的数据导航显示
    legend_opts=options.LegendOpts(is_show=False),
    # 设置标题
    title_opts=options.TitleOpts(title="全国范围内", subtitle="疫情数据"))

疫情分布地图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

组合图

我们用此前的柱状图和折线图创建组合图表

在工程项目(xiaohan1)下,新建 python 文件(part5.py)

part5.py 文件如下

from pyecharts.charts import Bar, Line, Grid
from pyecharts import options

# 1. 准备图表数据
class_list = ["一班", "二班", "三班", "四班", "五班"]
boy_list = [20, 23, 33, 30, 17]
girl_list = [30, 27, 17, 20, 33]

# 2. 创建实例化对象
bar = Bar()
line = Line()

# 3. 创建关联
bar.add_xaxis(class_list)
bar.add_yaxis("男生", boy_list)
bar.add_yaxis("女生", girl_list)

line.add_xaxis(class_list)
line.add_yaxis("男生", boy_list)
line.add_yaxis("女生", girl_list)

# 4. 创建组合类对象
grid = Grid()

# 5. 添加图表到组合类对象中
grid.add(bar, grid_opts=options.GridOpts(pos_bottom="60%"))
grid.add(line, grid_opts=options.GridOpts(pos_top="60%"))

# 6. 渲染数据 得到图表
grid.render("图表\\组合图.html")

组合图.html 文件经浏览器渲染后的结果如下:

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是我来晚了!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值