这里使用比较经典的pyechart的第三方包。
json数据格式
json是一种轻量级的数据交互形式。可以按照json指定的格式去组织和封装数据。或者这么说本质上json就是一个带有特定格式的字符串。
主要功能:json是一种在各个编程语言种流通的数据格式,负责不同编程语言中的数据传递和交互。
json的格式实际上就是(一个列表,内部的元素是字典)
python数据和json数据之间的相互转换
import json
data =[{'name':'张三','age':18},{'name':'李四','age':19}]
# 通过json.dumps方法把python的数据转化为json的数据
json_str = json.dumps(data)
print(type(json_str))
print(json_str)
# 我们可看见中文的地方不是我们所认识的,原因就是中文存储的数据格式与英文的不同,可以采用下列方法进行显示。
json_str = json.dumps(data,ensure_ascii=False)
print(json_str)
# 通过json.loads方法把json的数据转化为python的数据
python_str = json.loads(json_str)
print(type(python_str))
print(python_str)
输出结果:
值得注意的是,如果传入的数据仅有一个,那么传入传出的都是dic也就是字典类型。大于等于2个才是list列表类型。
还有就是json.dumps(data,ensure_ascii=False),在python数据转化为json数据的时候,如果内部有中文,而且我们也想要看看传入的数据对不对,可以加上ensure_ascii=False进行观察。
pyecharts模块介绍
pyecharts这个模块是帮助我们做出可视化的效果图的一种形式。这是百度研发的一个包。
官网:Echarts
以及更多的图表,可以参考内部图案给出的代码进行修改相关的数据值即可。
官网:Echarts的画廊功能
pyecharts快速入门
基础的折线图
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
# 设置x轴y轴的变量
line = Line()
line.add_xaxis(["小红","小明","小张"])
line.add_yaxis("小红花",[10,20,15])
# 进行全局的配置 小技巧按住ctrl+p可以查看此函数内部需求的变量
line.set_global_opts(
title_opts=TitleOpts(title="小红花数量呈现图",pos_left="center",pos_bottom="1%"),
legend_opts=LegendOpts(is_show=True),
toolbox_opts=ToolboxOpts(is_show=True),
visualmap_opts=VisualMapOpts(is_show=True)
)
# 画出图标
line.render()
画出的结果:
值得注意的是,输出的是html为结果的图,用浏览器打开。
以及对于全局配置相关的操作想要进行了解,或者需要更深的应用,可以前往官网:Echarts
基础地图的使用
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
# 构建地图对象
map = Map()
# 准备数据
data = [("上海市",100),("北京市",120),("广东省",140),("福建省",160),("浙江省",180)]
# 添加数据
map.add("测试图表",data)
# 设置全局选项
map.set_global_opts(
visualmap_opts=VisualMapOpts(is_show=True,
is_piecewise=True,
pieces=[{"min":1,"max":99,"label":"1-199","color":"#CCFFFF"},
{"min":100,"max":149,"label":"100-149","color":"#FF6666"},
{"min":150,"max":200,"label":"150-200","color":"#990033"}]))
# 生成地图
map.render()
画出的结果:
值得注意的是,#CCFFFF是颜色的类型,对于颜色需要相关的也可以去下面的那个懒人网内部进行搜索。
基础柱状图
from pyecharts.charts import Bar
from pyecharts.options import *
# 构建柱状图对象
bar = Bar()
# 构造x轴
bar.add_xaxis(["小红","小明","小张"])
# 构造y轴,并且标签在右
bar.add_yaxis("小红花数目",[20,10,15],label_opts=LabelOpts(position='right'))
# 反转xy轴
bar.reversal_axis()
#绘图
bar.render()
画出的图案:
基础时间柱状图
# 导入相关功能
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
# 构建柱状图对象
bar1 = Bar()
bar2 = Bar()
bar3 = Bar()
# 构造x轴
bar1.add_xaxis(["小红","小明","小张"])
bar2.add_xaxis(["小红","小明","小张"])
bar3.add_xaxis(["小红","小明","小张"])
# 构造y轴,并且标签在右
bar1.add_yaxis("小红花数目",[20,10,15],label_opts=LabelOpts(position='right'))
bar2.add_yaxis("小红花数目",[30,20,30],label_opts=LabelOpts(position='right'))
bar3.add_yaxis("小红花数目",[40,40,35],label_opts=LabelOpts(position='right'))
# 反转xy轴
bar1.reversal_axis()
bar2.reversal_axis()
bar3.reversal_axis()
# 构建时间线对象,以及主题设置
timeline = Timeline({"theme" : ThemeType.LIGHT})
# 在时间线对象内绘制柱状图形
timeline.add(bar1,"时间1")
timeline.add(bar2,"时间2")
timeline.add(bar3,"时间3")
# 自动播放设置
timeline.add_schema(
play_interval=1000, # 自动播放时间差
is_timeline_show= True, # 是否自动播放的时候显示时间线
is_auto_play=True, # 是否自动播放
is_loop_play=True # 是否循环播放
)
#绘图
timeline.render()
画出的结果:
数据处理
对于数据的处理,这边推荐可以使用一个辅助观测的网站懒人网站
重点其实就在于去修改相关的数据。
调用的功能函数实际上也就是之前列表的相关函数。
过程:
- 先去掉头尾不符合字典规则的文字。
- 取出想要的数据。