本文大纲参考黑马程序员Python系列教程

目录

一、json数据格式

1.python数据转换为json类型数据

2.json字符串转换为python数据类型

二、pyecharts包介绍

1.安装pyecharts包

2.使用pyecharts绘制简单折线图

3.设置全局配置项

三、折线图的生成

四、地图的生成

1.基础地图显示

2.国内疫情地图显示

3.河南省疫情显示
​​​​​​​


一、json数据格式

json是一种轻量级的数据交互格式,可以按照指定的格式去组织和封装数据。

json本质上是一种带有特定格式的字符串,负责不同编程语言中数据的传递和交换。

1.python数据转换为json类型数据

将python中的数据转换为json类型数据,我们只需要使用json模块中的dumps函数即可完成。

import json
#准备一个列表,列表中的每一个值都是字典,将其转化为json
data = [{"name":"小A","age":26},{"name":"小B","age":20},{"name":"小C","age":18}]
json_str = json.dumps(data,ensure_ascii=False)#第二个参数的目的是正确的显示中文
print(type(json_str))#类型为str
print(json_str)
#准备一个字典,将其转换为json
data1 = {"name":"Kiku","age":19}
json_str1 = json.dumps(data1)#字典不含中文,不需要加上ensure_ascii
print(type(json_str1))#类型为str
print(json_str1)

2.json字符串转换为python数据类型

将json字符串类型还原为python数据类型,我们可以使用json模块下的loads函数来完成。

import json
#将json字符串类型转换为python列表
exp1 = '[{"name": "小A", "age": 26}, {"name": "小B", "age": 20}, {"name": "小C", "age": 18}]'
py_list = json.loads(exp1)
print(type(py_list))
print(py_list)
#将json字符串类型转换为python字典
exp2 = '{"name": "Kiku", "age": 19}'#注意字符串要用引号表明
py_dict = json.loads(exp2)
print(type(py_dict))
print(py_dict)

二、pyecharts包介绍

1.安装pyecharts包

win+R快捷键打开cmd命令窗口,输入"pip install pyecharts"即可下载pyecharts包,下载完毕后输入python进入python环境中,输入import pyecharts,如果没有报错,说明成功安装。

2.使用pyecharts绘制简单折线图

  1. 绘制折线图需要pyecharts包中charts模块的line功能,我们直接导入就可以了。
  2. 创建一个折线图对象,用于存储折线图的html文件。
  3. 使用add_xaxis和add_yaxis函数添加x轴,y轴内容。
  4. 使用render命令生成图表。
#导入包和Line功能
from pyecharts.charts import Line
#得到折线图对象
line = Line()
#添加X轴数据
line.add_xaxis(["中国","美国","英国"])
#添加Y轴数据
line.add_yaxis("GDP",[30,20,10])
#生成图表
line.render()

运行命令后我们会在pycharm文件栏中看到新出现的render文件,打开html文件后选择用浏览器打开,这时候我们就能看到做好的折线图了。

3.设置全局配置项

通过上述方法设计出的图表往往不够美观,所以我们可以使用全局配置项来优化一下。

#导入包和Line功能
from pyecharts.charts import Line
#导入全局配置项所需功能TitleOpts(标题设置),LegendOpts(图例设置),Toolbox(工具箱),VisualMapOpts(视觉映射)
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
#得到折线图对象
line = Line()
#添加X轴数据
line.add_xaxis(["中国","美国","英国"])
#添加Y轴数据
line.add_yaxis("GDP",[30,20,10])
#设置全局配置项set_global_opts
line.set_global_opts(title_opts=TitleOpts(title="GDP展示",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()

结果如图所示

pyecharts网站上还有很多全局配置项,大家有兴趣可以自行查找。


三、折线图的生成

当我们拿到一长串json数据时,我们要将其转化为折线图,方法如下:

  1. 分析数据层级,可以使用ab173.com网站
  2. 分析json数据格式,去除多余部分内容
  3. 将json格式转换为python格式字典
  4. 将字典内容切片,分别作为x轴和y轴
import json
#打开数据文件
f_us = open("D:\桌面\python课件\资料\可视化案例数据\折线图数据\美国.txt",'r',encoding='utf-8')
#获取数据
us_data = f_us.read()
#去掉不合规范的开头和结尾
us_data = us_data.replace("jsonp_1629344292311_69436(","")#使用替换法
us_data = us_data[:-2]#使用切片法将最后两个字符去掉
#json转python字典
us_dict = json.loads(us_data)
#获取trend key,将data中的第一个子字典取出,并取出子字典中trend键的key值
trend_data =us_dict['data'][0]['trend']
#获取日期数据,用于x轴,取前314个值
x_data = trend_data['updateDate'][:314]
#获取确诊数据,用于y轴,取前314个值
y_data = trend_data['list'][0]['data'][:314]
#生成图表

下面来到最后一步,将数据处理和图表生成的代码结合起来,生成最终的折线图。

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts
#打开数据文件
f_us = open("D:\桌面\python课件\资料\可视化案例数据\折线图数据\美国.txt",'r',encoding='utf-8')
f_jp = open("D:\桌面\python课件\资料\可视化案例数据\折线图数据\日本.txt",'r',encoding='utf-8')
f_in = open("D:\桌面\python课件\资料\可视化案例数据\折线图数据\印度.txt",'r',encoding='utf-8')
#获取数据
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()
#去掉不合规范的开头和结尾
us_data = us_data.replace("jsonp_1629344292311_69436(","")#使用替换法
us_data = us_data[:-2]#使用切片法将最后两个字符去掉jp_data = jp_data.replace("jsonp_1629350871167_29498(","")#使用替换法
jp_data = jp_data[:-2]#使用切片法将最后两个字符去掉in_data = in_data.replace("jsonp_1629350745930_63180(","")#使用替换法
in_data = in_data[:-2]#使用切片法将最后两个字符去掉
#json转python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
#获取trend key,将data中的第一个子字典取出,并取出子字典中trend键的key值
us_trend_data =us_dict['data'][0]['trend']
jp_trend_data =jp_dict['data'][0]['trend']
in_trend_data =in_dict['data'][0]['trend']
#获取日期数据,用于x轴,取前314个值
us_x_data = us_trend_data['updateDate'][:314]
jp_x_data = jp_trend_data['updateDate'][:314]
in_x_data = in_trend_data['updateDate'][:314]
#获取确诊数据,用于y轴,取前314个值
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
#生成图表
line = Line()
#添加x轴数据(3个国家通用)
line.add_xaxis(us_x_data)
#添加y轴数据
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))#不在折线图上显示数据
line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))#设置全局选项
line.set_global_opts(title_opts=TitleOpts(title="2020年美日印三国疫情情况",pos_left="center",pos_bottom="1%"),#设置与页面左侧的距离以及与页面左侧的距离
)#生成图表文件
line.render()
#关闭文件
f_us.close()
f_jp.close()
f_in.close()

结果如下所示:


四、地图的生成

1.基础地图显示

学完折线图的生成以后,下面我们进入地图的学习,地图构建所需的数据很简单:一个包含若干元组的列表就可以了,每个元组中需要包含城市或省份名称以及所对应的数据。如下例所示:

from pyecharts.charts import Map
#准备地图对象
map = Map()
#给定数据
data = [("湖北省",99),("湖南省",199),("台湾省",299),("北京市",399),("上海市",499)
]
#添加数据,第一个数据为地图名称,第二个数据为给定的数据,第三个数据表示地图类型
map.add("中国地图",data,"china")
#构建地图
map.render()

与上例折线图生成基本一致,这里使用的是Map函数。运行以后结果如下:

现在的地图很粗糙,没有颜色显示,所以我们下一步使用全局设置项对地图进行美化。

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
#准备地图对象
map = Map()
#给定数据
data = [("湖北省",99),("湖南省",199),("台湾省",299),("北京市",399),("上海市",499)
]
#添加数据,第一个数据为地图名称,第二个数据为给定的数据,第三个数据表示地图类型
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"},#颜色代码为rgb颜色{"min":10,"max":99,"label":"10-99","color":"#FFFF99"},{"min":100,"max":500,"label":"100-500","color":"#990033"}])
)
#构建地图
map.render()

生成的地图如下:

2.国内疫情地图显示

学完了基础的地图显示功能以后,我们来试一下具体的案例——国内疫情显示。

import json
from pyecharts.charts import Map
from pyecharts.options import *
# 读取json数据文件,并拷贝到data中
f = open("D:\桌面\python课件\资料\可视化案例数据\地图数据\疫情.txt","r",encoding="utf-8")
data = f.read()
f.close()
# 将json类型文件转换为Python的字典类型
data_dict = json.loads(data)
# 读取各省份的数据
province_data_list = data_dict["areaTree"][0]["children"]
# 组装每个省份的名称和疫情数据为元组,并将元组封装为列表
data_list = []
for province_data in province_data_list:province_name = province_data["name"]province_confirm = province_data["total"]["confirm"]data_list.append((province_name,province_confirm))# 数据处理完成,开始构建地图
map=Map()
map.add("各省份确诊人数",data_list,"china")
# 设置全局选项
map.set_global_opts(title_opts=TitleOpts(title="全国疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min":1,"max":99,"label":"1-99人","color":"#CCFFFF"},{"min":100,"max":999,"label":"100-999人","color":"#FFFF99"},{"min":1000,"max":4999,"label":"1000-4999人","color":"#FF9966"},{"min":5000,"max":9999,"label":"5000-9999人","color":"#FF6666"},{"min":10000,"max":99999,"label":"10000-99999人","color":"#CC3333"},{"min":100000,"label":"100000人以上","color":"#990033"},])
)
# 生成图表
map.render("全国疫情地图.html")

3.河南省疫情显示

河南省地图显示和全国地图显示基本上一样,只是在数据处理部分略有差别

import json
from pyecharts.charts import Map
from pyecharts.options import *
# 读取json数据文件,并拷贝到data中
f = open("D:\桌面\python课件\资料\可视化案例数据\地图数据\疫情.txt","r",encoding="utf-8")
data = f.read()
f.close()
# 将json类型文件转换为Python的字典类型
data_dict = json.loads(data)
# 读取省份数据
cities_data_list = data_dict["areaTree"][0]["children"][3]["children"]
# 组装每个省份的名称和疫情数据为元组,并将元组封装为列表
data_list = []
for cities_data in cities_data_list:cities_name = cities_data["name"]+"市"cities_confirm = cities_data["total"]["confirm"]data_list.append((cities_name,cities_confirm))
# 手动添加数据
data_list.append(("济源市",5))# 数据处理完成,开始构建地图
map=Map()
map.add("河南省疫情分布",data_list,"河南")
# 设置全局选项
map.set_global_opts(title_opts=TitleOpts(title="河南省疫情地图"),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min":1,"max":99,"label":"1-99人","color":"#CCFFFF"},{"min":100,"max":999,"label":"100-999人","color":"#FFFF99"},{"min":1000,"max":4999,"label":"1000-4999人","color":"#FF9966"},{"min":5000,"max":9999,"label":"5000-9999人","color":"#FF6666"},{"min":10000,"max":99999,"label":"10000-99999人","color":"#CC3333"},{"min":100000,"label":"100000人以上","color":"#990033"},])
)
# 生成图表
map.render("河南省疫情地图.html")

地图如下所示:

python基础——数据可视化相关推荐

  1. 【Python】数据可视化教程来了!

    来自:Datawhale????数据可视化小组 开源初衷 Matplotlib可以说是python数据可视化最重要且常见的工具之一,几乎每个和数据打交道的人都不可避免,还有大量可视化工具是基于它的二次 ...

  2. 【Python实现数据可视化】创建3D柱状图

    虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来.在matplotlib的世界里,这些扩展叫做工具包 ...

  3. 数据基础---数据可视化

    python中数据可视化 关于统计的几个概念 频率直方图 在统计数据时,按照频数分布表,在平面直角坐标系中,横轴标出每个组的端点(按类别统计时就是按类别分组),纵轴表示频数,每个矩形的高代表对应的频数 ...

  4. 【教程】Python科研数据可视化、MATLAB科研数据可视化

    在过去的20年中,随着社会产生数据的大量增加,对数据的理解.解释与决策的需求也随之增加.而固定不变是人类本身,所以我们的大脑必须学会理解这些日益增加的数据信息.所谓"一图胜千言", ...

  5. python实现数据可视化_使用Matplotib python实现数据可视化

    python实现数据可视化 I Feel: 我觉得: In today's digital world data has become as important as air. Machines &a ...

  6. python气象数据可视化学习笔记6——利用python地图库cnmaps绘制地图填色图并白化

    文章目录 1. 效果图 2. cnmaps简介及安装 2.1 写在前面 2.2 cnmaps简介和安装 3. 导入库 4. 定义绘图函数 4.1 使用get_adm_maps返回地图边界 4.2 ax ...

  7. Python数据分析-数据可视化(二)

    欢迎大家访问个人博客:https://jmxgodlz.xyz 文章目录 前言 Matplotlib 折线图格式调整 标签 线条颜色 线条形状 折点样式 线条透明度 前言 看到有些论文插图十分简洁美观 ...

  8. 视频教程-Python大数据可视化-Python

    Python大数据可视化 7年软件开发架构经验,12年IT培训经验,曾就职于拜特科技,金蝶软件,软酷网络等多家互联网公司.擅长Java EE,前端,iOS及大数据等技术方向的开发及教学.策划并撰稿大数 ...

  9. python处理数据可视化_数据整理101:使用Python提取,处理和可视化NBA数据

    python处理数据可视化 由Viraj Parekh | 2017年4月6日 (by Viraj Parekh | April 6, 2017) This is a basic tutorial u ...

最新文章

  1. IDEA如何将git分支代码合并到master
  2. SAP QM中阶之Material Specification的使用
  3. 数据库集群和高可用解决方案
  4. [YTU]_2384( 矩形类中运算符重载【C++】)
  5. oracle 压力测试工具benchmarksql
  6. WINDOWS是如何在注册表里记录盘符分配的
  7. java逻辑运算符的使用
  8. 管理新语:搞绩效考评需谨慎,切勿随意
  9. python的文件夹里面有什么_Python的文件及文件夹操作
  10. LQR控制实例、传递函数与状态矩阵相互转换
  11. 爱加密加固病毒分析-破解篇
  12. 10X 空间转录组学
  13. C语言练习①一英寸是多少厘米?
  14. Intel SGX远程认证【SGX手册截图】
  15. wxpython各种基本控件_wxpython 基本的控件
  16. Git配置详细教程及基础使用方法,教你轻松学会git代码管理
  17. 从排名看主流半导体厂商在3G市场的策略与心态
  18. 中级认证宝典【全理论】
  19. [转]MySQL数据库引擎
  20. 黑马物联PLC远程下载神器 彻底解决您外地PLC下载 上传 监控 修改程序**

热门文章

  1. mysql-8.0.13-winx64安装卸载配置使用教程
  2. 用vis数组保证只入队一次P5594 【XR-4】模拟赛
  3. java基础代码,适合0基础学习者
  4. 【GDOI2018模拟7.14】小奇的糖果
  5. RabbitMQ入门前篇
  6. 苹果cms10的一次尝试发现了苹果cms10被挂马极有可能是苹果cms作者故意的js漏洞或后门导致
  7. clover写入efi_关于黑苹果clover写入EFI后Deepin无法正常引导的解决方法
  8. 微信聊天记录删除了怎么恢复?试试这样操作行不行
  9. win11文件夹里有却搜索不到了?
  10. henauOJ055(猴子吃桃)