Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python基础——json数据及pyecharts入门使用【用pyecharts生成折线图,地图,和动态柱状图】

python基础——json数据及pyecharts入门使用【用pyecharts生成折线图,地图,和动态柱状图】

作者头像
用户11029137
发布于 2024-04-15 01:06:51
发布于 2024-04-15 01:06:51
37200
代码可运行
举报
文章被收录于专栏:编程学习编程学习
运行总次数:0
代码可运行

📝前言: 这篇文章主要记录一下使用pyecharts生成GDP折线图的步骤和过程

一,json数据

1,json数据的特点

什么是json数据? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它是基于 JavaScript 的对象表示法,但也可以在其他编程语言中使用。

很抽象,对于我们初学python来说只需要了解: 它就像一个中转站,其他语言如C语言,python可以转换成json数据,而json数据又可以被转换成其他语言 (从而实现把C语言的数据转换成python的数据)

json本质上就是有特定格式的字符串,它的类型是字符串 json的数据格式要求很严格,一般是下面两种:

(这看起来就像是:1,字典;2,以字典为元素的列表)

2,json数据与python数据间的转换

使用 dumps(转json)和loads(转python) 当json数据规范的时候(像上面两种形式),我们就可以将其转换成python数据 当python数据符合json的格式的时候,我们也可以将其转换成json数据

方法如下:

(注意:python数据转换成json的时候,中文会被转换成Unicode的字符) 如果想要显示中文,则需要把dumps中的第二个参数ensure_ascii设置成False

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import json
# 将python数据转换成json
dict = {"张三":33, "李四":42}
j1 = json.dumps(dict)
print(j1) # 第一行输出的

j2 = json.dumps(dict, ensure_ascii=False)
print(j2) # 第二行输出的

输出结果:

下面有个好用的网址: 懒人工具(用于json格式化):http://www.kuquidc.com/ 或者(搜索:ab173)

二,pyecharts

pyecharts是一个用来做数据可视化的模块,在这里不过多介绍。 可以看下它的官网:pyecharts.org 以及pyecharts-gallery:gallery.pyecharts.org

三,生成折线图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导包
import json # json
from pyecharts.charts import Line # 折线图对象
from pyecharts.options import LabelOpts, TitleOpts # 配置项

# 读取文件,拿数据(json数据的本质是特殊字符串)
f_us = open("D:/美国.txt","r",encoding="UTF-8")
us_data = f_us.read()
f_jp = open("D:/日本.txt","r",encoding="UTF-8")
jp_data = f_jp.read()
f_in = open("D:/印度.txt","r",encoding="UTF-8")
in_data = f_in.read()

# 处理json数据中不规范的内容
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数据转换成字典
us_data = json.loads(us_data)
jp_data = json.loads(jp_data)
in_data = json.loads(in_data)

# 拿到获取 确诊人数和日期数据 trend 的key
us_key = us_data["data"][0]["trend"]
jp_key = jp_data["data"][0]["trend"]
in_key = in_data["data"][0]["trend"]

# 获取x轴数据
us_x = us_key["updateDate"][:314]
jp_x = jp_key["updateDate"][:314]
in_x = in_key["updateDate"][:314]

# 获取y轴数据
us_y = us_key["list"][0]["data"][:314]
jp_y = jp_key["list"][0]["data"][:314]
in_y = in_key["list"][0]["data"][:314]

# 数据获取完成,接下来就可以生成折线图
# 生成折线图对象
line = Line()

# 设置x轴
line.add_xaxis(us_x) # x轴只需要一个国家的数据就可以

# 设置y轴
line.add_yaxis("美国确诊人数",us_y,label_opts=LabelOpts(is_show=False)) # 这是让每个点的数据不出现
line.add_yaxis("日本确诊人数",jp_y,label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊人数",in_y,label_opts=LabelOpts(is_show=False))

# 设置全局配置项 标题和标题的位置
line.set_global_opts(
    title_opts=TitleOpts(title="2020年美日印三国疫情确诊人数",pos_left="center",pos_bottom="1%"))

# 生成图像
line.render("自主完成折线图.html") # 不要忘记加:html

# 关闭文件
f_us.close()
f_jp.close()
f_in.close()

效果:

(以上非真实数据)

四,生成地图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导包
import json
from pyecharts.charts import Map
from pyecharts.options import * # 一次性导入配置项的所有包

# 读取json数据
f = open("D:/疫情.txt","r",encoding="UTF-8")
data = f.read()
f.close()

# 将json数据转换成字典
data = json.loads(data)

# 拿到用于组成数据中元组的键
city_data = data["areaTree"][0]["children"][3]["children"]

# 键与值配对,设置好数据
# (因为需要的数据是:每个元素是元组的列表,这个元组的键是地区,值是每个地区的数据)
data_list =[]
for city_data_name in city_data:
    city_name = city_data_name["name"] + "市"  # 在每个城市后面加上个“市”
    city_comfirm = city_data_name["total"]["confirm"]  # 每个城市的确诊人数
    data_list.append((city_name,city_comfirm))  # 生成元组,加入到列表中

# 手动添加济源市的数据
data_list.append(("济源市",5))

# 生成地图对象
map = Map()

# 加入数据
map.add("河南省疫情地图",data_list,maptype="河南")

# 设置配置项
map.set_global_opts(
    title_opts=TitleOpts(
        title="河南省疫情地图"),  # 地图的title
    visualmap_opts=VisualMapOpts(
        is_show=True,  # 是否显示地图
        is_piecewise=True,  # 是否设置分段,下面就是如何分段(包括min,max,label,color)
        pieces= [
                {"min":1,"max": 9, "lable": "1~99人", "color": "#CCFFFF"},
                {"min": 10, "max": 99, "lable": "10~999人", "color": "#FFFF99"},
                {"min": 100, "max": 499, "lable": "100~499人", "color": "#FF9966"},
                {"min": 500, "max": 999, "lable": "500~9999人", "color": "#FF6666"},
                        ]
    )
)
# 生成地图
map.render("河南省疫情地图.html")

rgb颜色对照表(找颜色的16位代码):可以在AB173(网站)——前端去找

效果:

(以上非真实数据)

五,动态GDP图

时间图就是:不同的图片放在不同的位置,然后播放

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 动态GDP开发
# 导包
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *  # 导入配置项
from pyecharts.globals import ThemeType  #导入主题

# 读取数据
f = open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")
data = f.readlines()
f.close()

# 删除第一行无效数据
data.pop(0)
# 现在的数据是:[句子,句子]
# 我们希望得到的是:{year1:[[country1,gdp1],[country2,gdp2],[]],year2:[[],[]...}
data_dict = {}
for sentence in data:  # sentence 是字符串
    year = int(sentence.split(",")[0])
    country = sentence.split(",")[1]
    gdp = float(sentence.split(",")[2])
    # dict[key] = value 如果key不存在会创建
    # 我们用append在值(列表上追加),但是列表不存在会报错
    try:
        data_dict[year].append([country,gdp])  # 尝试追加
    except KeyError:
        data_dict[year] = []  # 如果列表不存在就创建,再追加
        data_dict[year].append([country, gdp])
# 上面我们的字典就创建好了
# 生成时间线对象,并且设置主题
timeline = Timeline({"theme":ThemeType.LIGHT})
# 把字典中的元素按时间排序
sorted_year_list = sorted(data_dict.keys())  # 得到的是[year1,year2...]
# 按时间遍历字典,获取信息,添加bar图
# 这是字典的结构:{year1:[[country1,gdp1],[country2,gdp2],[]],year2:[[],[]...}
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element: element[1],reverse=True)
    top_country = data_dict[year][0:8]  # 截取前8个国家,已经是:[[],[]...]
    # 获取前八个国家的数据,添加到列表里面,准备给x轴和y轴使用
    x_data = []
    y_data = []
    for county_data in top_country:  # 这里拿到的是列表里面的元素[county,gdp]
        x_data.append(county_data[0])
        y_data.append(county_data[1]/100000000)
    # 创建柱状图
    bar = Bar()
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    bar.reversal_axis()
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}年世界top8国家GDP排名")
    )
    # 往时间线里面添加图表
    timeline.add(bar,str(year))

# 设置自动播放
timeline.add_schema(
    play_interval=500,
    is_timeline_show=True,
    is_loop_play=False,
    is_auto_play=True
)
# 生成图标
timeline.render("GDP动态图.html")

效果(就想象一下动态吧),以下是两张截图:

(以上非真实数据)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【武汉加油⛽️】基于Pyecharts的疫情数据可视化~
image 前言 ?疫情终将过去,静待春暖花开~ ?本文使用的数据源来自https://lab.isaaclin.cn/nCoV/zh; ?运行本项目需要将pyecharts版本更新至v1.6.2,!
Awesome_Tang
2020/02/25
1K0
【武汉加油⛽️】基于Pyecharts的疫情数据可视化~
(Python实用)用Python做的交互式动态大图
今天给大家分享1个pyecharts交互式动态可视化案例,通过先拆分、后组合的方式,一步步教你如何实现,具体成果如下。
天道Vax的时间宝藏
2021/08/11
1.2K1
如何用 Python 来绘制玫瑰图等常见疫情图
新冠疫情已经持续好几个月了,目前,我国疫情已经基本控制住了,我们会看到很多网站都提供了多种疫情统计图,今天我们使用 Python 的 pyecharts 框架来绘制一些比较常见的统计图。
Python小二
2020/08/18
1.2K0
如何用 Python 来绘制玫瑰图等常见疫情图
pyecharts︱交互式pyecharts的相关使用教程
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。以下是最新版echart的靓图。当然,pyecharts貌似没有这么齐全。
悟乙己
2022/05/09
3.2K0
pyecharts︱交互式pyecharts的相关使用教程
用 Pyecharts 制作炫酷的可视化大屏
作者 | 俊欣 来源 | 关于数据分析与可视化 前两篇Pyecharts的文章来帮我们简单的梳理了一下可以用Pyecharts来绘制哪些图表之后,本篇文章我们用pyecharts里面的一些组件,将绘制的图表都组合起来 首先Grid组件 首先介绍Pyecharts模块当中的Grid组件,使用Grid组件可以很好地将多张图无论是上下组合还是左右组合,都能够很好地拼接起来,我们先来看第一个例子 bar = ( Bar() .add_xaxis(Fak
AI科技大本营
2023/04/14
9020
用 Pyecharts 制作炫酷的可视化大屏
用Pyecharts对疫情数据进行可视化分析
本文使用的数据源来自https://lab.isaaclin.cn/nCoV/zh
用户3577892
2020/06/12
1.9K0
用Pyecharts对疫情数据进行可视化分析
美国失业人数突破2200万!这个动态图我用Python画出来了
【导语】:今天我们聊聊美国失业人数,Python技术部分可以直接看第二部分。公众号后台,回复关键字“失业人数”获取完整数据。
CDA数据分析师
2020/05/06
6180
利用pyecharts做数据大屏dashboard
本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/11/25 15:50:29
overme
2022/01/17
1.8K0
利用pyecharts做数据大屏dashboard
pyecharts-5-绘制柱状图
Pyecharts-5-绘制柱状图Bar 本文中介绍的是如何利用pyecharts中绘制各种bar柱状图。 主要是参考官网的各种例子进行学习和整理 导入各种库 from pyecharts impor
皮大大
2021/03/01
8030
pyecharts-5-绘制柱状图
这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
编辑 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)
杰哥的IT之旅
2020/09/22
1.9K0
这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
昨天的我可不是今天的我,柱状图又回来了!
小编上次教给大家的pyecharts技能练得怎么样了呀?今天小编又给大家带来新的一招,别眨眼,马上开始!
数据山谷
2020/12/08
3490
这个折线图,惊艳到我了!
展现多个系列的数据,一般习惯使用柱状图或折线图。本文使用个人比较喜爱的Pyecharts库,绘制呈现多个系列数据的普通折现图(line chart)、堆叠图(stack chart)、面积堆叠图(stack area chart)。
double
2021/12/15
1.1K0
这个折线图,惊艳到我了!
基于PyEcharts的COVID-19疫情可视化分析
将国家或地区的数值信息映射到地图上,通过颜色变化来表示数值的大小或范围。颜色地图适合带有地理位置信息的数据的展现,将颜色和地图相结合,直观显示数据的地理分布,通过颜色深浅容易判断数值的大小。下图显示的是截止到4月6日,中国各省市现有确诊人数地图,每个省市区域被赋予一种颜色,通过查看左下角的图例可以明确每种颜色对应的数值范围。我们可以看到图例中的颜色由下至上依次从浅到深,数值范围也相应地由小到大。通过地图可以非常直观地看到各省市现存确诊人数的多少,比如湖北的现存确诊还有几百人,北京、上海、广东等地由于境外输入病例的增加,还存在不少的现有确诊病例,安徽、广西、青海等地现有确诊病例已经清零。
数据酷客
2020/04/27
5K0
基于PyEcharts的COVID-19疫情可视化分析
Python数据可视化(三)
在大数据时代,数据可视化成为了分析和展示数据的重要手段。在众多数据可视化形式中,柱状图以其直观性和易读性而广受欢迎。本章基于案例分析详细讲解了柱状图的不同类型,包括基础柱状图以及动态柱状图。
Heaven645
2024/08/02
1471
Python数据可视化(三)
python数据分析——pyecharts柱状图全解(小白必看)
pyecharts主要基于Web浏览器进行显示,绘制的图形比较多,包括折线图、柱状图、饼图、漏斗图 地图和极坐标图等。使用pyecharts绘图代码量很少,但绘制的图形比较美观。
Python进阶者
2021/04/19
12.2K0
python数据分析——pyecharts柱状图全解(小白必看)
python pyecharts数据可视化 折线图 箱形图
数据来源:http://www.tianqihoubao.com/aqi/chengdu-201901.html
叶庭云
2020/09/17
3K0
python  pyecharts数据可视化   折线图  箱形图
中国城镇污水处理厂数据可视化
请注意,本文编写于 983 天前,最后修改于 66 天前,其中某些信息可能已经过时。
曼亚灿
2023/05/17
3920
中国城镇污水处理厂数据可视化
Pyecharts进阶篇
本章节,我们会使用全国空气质量数据呈现中国地图,还会使用全球各个国家或地区GDP数据绘制全球地图。
@小森
2024/06/28
1380
Pyecharts进阶篇
python可视化利器:pyecharts
前面我们提及ggplot在R和Python中都是数据可视化的利器,在机器学习和数据分析领域得到了广泛的应用。pyecharts结合了Python和百度开源的Echarts工具,基于其交互性和便利性得到了众多开发者的认可。拥有如下的特点:
TOMOCAT
2020/06/10
1.7K0
Python数据可视化(一)
在大数据时代,数据可视化成为了分析和展示数据的重要手段。Pyecharts 是一个基于 Python 的强大数据可视化库,能够快速生成易于分享和交互的可视化图表。本章详细讲解了 Pyecharts 的官网资源、安装流程、全局配置项以及如何创建折线图。
Heaven645
2024/07/31
2841
Python数据可视化(一)
相关推荐
【武汉加油⛽️】基于Pyecharts的疫情数据可视化~
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验