一、json数据格式的转换
Python数据和Json数据的相互转换
python
# 准备数据
data = [{"name": "Ray", "age": 18}, {"name": "张三", "age": 20}]
# 将Python数据转换为json数据,通过方法json.dumps()
# ensure_ascii=False是为了确保中文不乱码
data = json.dumps(data,ensure_ascii=False)
print(data)
# 将json数据转换为Python数据,通过方法json.loads()
data = json.loads(data)
print(data)
二、pyecharts模块介绍
官网:pyecharts中文版官网
https://pyecharts.org/#/zh-cn/
画廊官网:
拥有众多图标样式示例,可以参考代码
画廊中文版官网
https://gallery.pyecharts.org/#/README
pyecharts模块安装
打开Pycharm的终端,输入如下命令开始安装pyecharts
pip install pyecharts
构建基础的折线图
python
# 导包,导入Line功能构建折线图对象
from pyecharts.charts import Line
# 得到折线图对象,相当于画了坐标系
line = Line()
# 添加X轴数据,相当于写了X轴都有哪些点
line.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴数据,相当于写了Y轴都有哪些点
line.add_yaxis("GDP", [30, 20, 10])
# 生成图表,相当于将点连成线
line.render()
运行代码后,会发现什么也没有,这个时候打开左侧的项目管理器,发现出现了一个【render.html】的文件

点击打开后,使用右上角预置的查看形式查看(可能需要挂梯子)

可以看到我们制作的图表

使用全局配置项设置属性
这里的全局配置选项可以通过set_global_opts方法进行配置,相应的选项和功能如下:
tips:使用时依旧需要导包
python
line.set_global_opts(
# 标题是GPD展示,其位置距离左侧是居中显示,距离底部1%的位置
title_opts=TitleOpts(title="GPD展示", pos_left="center", pos_bottom="1%"),
# 图例是显示的(默认显示)
legend_opts=LegendOpts(is_show=True),
# 工具箱是显示的
toolbox_opts=ToolboxOpts(is_show=True),
# 视觉映射是显示的
visualmap_opts=VisualMapOpts(is_show=True)
)
运行结果:

构建一个基础地图
python
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
# 准备地图对象
map = Map()
# 准备数据,必须加上"省",不然没有数据
data = [("河南省", 9), ("北京省", 99), ("上海市", 199), ("湖南省", 399), ("辽宁省", 499), ("青海省", 599)]
# 添加数据,默认中国
map.add("测试地图", data, "china")
# 设置全局选线
map.set_global_opts(
visualmap_opts=VisualMapOpts(
is_show=True,
# 允许手动校准范围
is_piecewise=True,
# 具体的校准范围
pieces=[
{"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},
{"min": 10, "max": 99, "label": "10-99人", "color": "#FFFF99"},
{"min": 100, "max": 499, "label": "99-499人", "color": "#FF9966"},
{"min": 500, "max": 999, "label": "499-999人", "color": "#FF6666"},
]
)
)
# 绘图
map.render()

构建基础柱状图
python
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
# 构建柱状图对象
bar = Bar()
# 添加X轴数据
bar.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴数据,数值标签显示在右侧
bar.add_yaxis("GPD", [30, 20, 10], label_opts=LabelOpts(position="right"))
# 反转X轴与Y轴
bar.reversal_axis()
# 绘图
bar.render()
运行结果:

构建时间线柱状图
python
from pyecharts.charts import Bar, Timeline
from pyecharts.globals import ThemeType
from pyecharts.options import LabelOpts
# 构建柱状图对象
bar1 = Bar()
# 添加X轴数据
bar1.add_xaxis(["中国", "美国", "英国"])
# 添加Y轴数据,数值标签显示在右侧
bar1.add_yaxis("GPD", [30, 20, 10], label_opts=LabelOpts(position="right"))
# 反转X轴与Y轴
bar1.reversal_axis()
bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GPD", [50, 30, 20], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GPD", [60, 70, 65], label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
bar4 = Bar()
bar4.add_xaxis(["中国", "美国", "英国"])
bar4.add_yaxis("GPD", [77, 80, 90], label_opts=LabelOpts(position="right"))
bar4.reversal_axis()
# 创建时间线对象,设置主题为亮蓝色
timeline = Timeline({"theme": ThemeType.LIGHT})
# timeline对象添加bar柱状图
timeline.add(bar1, "2022")
timeline.add(bar2, "2023")
timeline.add(bar3, "2024")
timeline.add(bar4, "2025")
# 设置自动播放
timeline.add_schema(
play_interval=1000,
is_timeline_show=True,
is_auto_play=True,
is_loop_play=True
)
# 时间线绘图
timeline.render()
运行结果:
