python_day7_画图

news2024/10/6 8:33:21

在这里插入图片描述

json数据与python字典的相互转换

import json

列表,其中每个元素均为一个字典

data = [{"name": "张三", "age": 10},
        {"name": "李四", "age": 13},
        {"name": "jay", "age": 17}]

json.dumps()P:将列表转为json,解决中文乱码:ensure_ascii=False

json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
print(f"数据类型为:{type(json_str)}")

在这里插入图片描述

将字典转为json数据

d = {"name": "java", "score": 90}
json_str = json.dumps(d)
print(json_str)
print(type(json_str))

在这里插入图片描述

json.loads():将json转为python数据类型

j_str = '[{"name": "张三", "age": 10}, {"name": "李四", "age": 13}, {"name": "jay", "age": 17}]'
list_j = json.loads(j_str)
print(list_j)
print(type(list_j))

j_str = '{"name": "java", "score": 90}'
dict_j = json.loads(j_str)
print(dict_j)
print(type(dict_j))

在这里插入图片描述

画一个简易折线图

在这里插入图片描述

# 导包
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts

# 创建一个折线图对象
line = Line()
# 给折线图添加X轴数据
line.add_xaxis(['中国', 'USA', '不列颠'])
# 添加Y轴坐标
line.add_yaxis("GDP", [30, 20, 10])

# 设置全局配置
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)
)

# 通过render()方法,将代码生成图像
line.render()

在这里插入图片描述

案例实战

绘制疫情数据折线图

在这里插入图片描述
在这里插入图片描述

json格式化,查看数据层级

在这里插入图片描述

导包

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts, LegendOpts, ToolboxOpts, VisualMapOpts

灵活使用print语句查看数据

数据准备

f_us = open("D:/美国.txt", "r", encoding="utf-8")
f_jp = open("D:/日本.txt", "r", encoding="utf-8")
f_in = open("D:/印度.txt", "r", encoding="utf-8")
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()

去除不合json规范的开头,也可以使用index(“{”)获取第一个左大括号索引,然后切片

us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.strip("jsonp_1629350871167_29498(")
in_data = in_data.strip("jsonp_1629350745930_63180(")

去除不合json规范的结尾

us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
# print(in_data)
# print(type(in_data))

将json数据转为字典

us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# print(in_dict)
# print(type(in_dict))

获取key:trend对应的value

# print(us_dict["data"][0]["trend"]["updateDate"])
us_trend_data = us_dict["data"][0]["trend"]
jp_trend_data = jp_dict["data"][0]["trend"]
in_trend_data = in_dict["data"][0]["trend"]
# print(in_trend_data)
# print(type(in_trend_data))

获取日期数据,作x轴(取2020年)

us_x_data = us_trend_data["updateDate"][:314]
jp_x_data = jp_trend_data["updateDate"][:314]
in_x_data = in_trend_data["updateDate"][:314]
# print(in_x_data)

获取确诊数据,作y轴(取2020年)

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]
# print(us_y_data)

制作图表

line = Line()

添加x轴数据

line.add_xaxis(us_x_data)
# line.add_xaxis(jp_x_data)
# line.add_xaxis(in_x_data)

添加y轴数据。注意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_bottom="1%", pos_left="center"),  # 注意此处逗号
    legend_opts=LegendOpts(is_show=True),
    toolbox_opts=ToolboxOpts(is_show=True),
    # visualmap_opts=VisualMapOpts(is_show=False)

)

通过render()方法,将代码生成图像

line.render()

关闭文件

f_us.close()
f_jp.close()
f_in.close()

效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PS:完整代码

# 处理数据
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LabelOpts, LegendOpts, ToolboxOpts, VisualMapOpts

f_us = open("D:/美国.txt", "r", encoding="utf-8")
f_jp = open("D:/日本.txt", "r", encoding="utf-8")
f_in = open("D:/印度.txt", "r", encoding="utf-8")
us_data = f_us.read()
jp_data = f_jp.read()
in_data = f_in.read()

# 去除不合json规范的开头,也可以使用index("{")获取第一个左大括号索引,然后切片
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.strip("jsonp_1629350871167_29498(")
in_data = in_data.strip("jsonp_1629350745930_63180(")

# 去除不合json规范的结尾
us_data = us_data[:-2]
jp_data = jp_data[:-2]
in_data = in_data[:-2]
# print(in_data)
# print(type(in_data))


# 将json数据转为字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
# print(in_dict)
# print(type(in_dict))


# 获取key:trend对应的value
# print(us_dict["data"][0]["trend"]["updateDate"])
us_trend_data = us_dict["data"][0]["trend"]
jp_trend_data = jp_dict["data"][0]["trend"]
in_trend_data = in_dict["data"][0]["trend"]
# print(in_trend_data)
# print(type(in_trend_data))


# 获取日期数据,作x轴(取2020年)
us_x_data = us_trend_data["updateDate"][:314]
jp_x_data = jp_trend_data["updateDate"][:314]
in_x_data = in_trend_data["updateDate"][:314]
# print(in_x_data)


# 获取确诊数据,作y轴(取2020年)
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]
# print(us_y_data)

# 制作图表
line = Line()
# 添加x轴数据
line.add_xaxis(us_x_data)
# line.add_xaxis(jp_x_data)
# line.add_xaxis(in_x_data)
# 添加y轴数据。注意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_bottom="1%", pos_left="center"),  # 注意此处逗号
    legend_opts=LegendOpts(is_show=True),
    toolbox_opts=ToolboxOpts(is_show=True),
    # visualmap_opts=VisualMapOpts(is_show=False)

)
# 通过render()方法,将代码生成图像
line.render()

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文阅读】Scaling Laws for Neural Language Models

前言 本文简要介绍 Scaling law 的主要结论原文地址:Scaling Laws for Neural Language Models个人认为不需要特别关注公式内各种符号的具体数值,而更应该关注不同因素之间的关系,比例等 Summary Performance depends strongly on scale, w…

windows安装netcat

netcat 就是 nc netcat官网:https://eternallybored.org/misc/netcat/ 将下载的netcat解压到C:\Program Files重命名为netcat (安装位置自定义) 配置一下环境变量,让nc命令可以在任何地方使用 在系统变量中加入netcat的启动路径 …

【面试题37】优化MYSQL数据库的方法有哪些

文章目录 一、前言二、优化的方向2.1 数据库设计优化2.2 查询优化2.3 硬件优化2.4 配置优化2.5. 定期维护和监控 三、MySQL查询优化的一些方向3.1 使用索引3.2 优化查询语句3.3 避免使用SELECT *3.4 分析查询计划3.5 设置合适的缓存大小3.6 分区表3.7 使用连接池3.8 定期优化数…

记录一组excel函数-将同一个id的多组数据整合到一格并用逗号隔开

初始数据如上图,用函数整理成下图 主要涉及两点:去重和集合 1.去重: 方法1: UNIQUE函数 使用方法:输入函数UNIQUE(范围1:范围2) 方法2:数据->删除重复项 使用方法:选中需要删除重复项的列&a…

Android :Activity生命周期

MainActivity .java import android.app.Activity; import android.os.Bundle; import android.util.Log; import java.util.function.LongToDoubleFunction; public class MainActivity extends Activity { //日志标记 private String TAG this.getClass().getSimpleNa…

Jenkins持续集成:使用Gerrit Trigger插件实现代码提交自动验证

Gerrit Trigger插件集成了Gerrit代码审查,当创建一个“patch set”时触发Jenkins构建,本文档介绍Gerrit Trigger插件配置及使用方法。 目录 安装Gerrit Trigger插件Gerrit 访问权限配置Jenkins Gerrit Server配置Gerrit Trigger配置 安装Gerrit Trigger插…

深入理解Linux网络——本机网络IO

文章目录 一、相关实际问题二、跨机网络通信过程1)跨机数据发送2)跨机数据接收3)跨机网络通信汇总 三、本机发送过程1)网络层路由2)网络设备子系统3)驱动程序 四、本机接收过程五、问题解答 系列文章&#…

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一,这个图表小部件收到了几个重要的更新,但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库,以帮助开发人员更快地构…

【ThinkPHP】实现一个逆向工程生成model

ThinkPHP为了节省一些重复的步骤,写了个简单版的生成model的工具,逆向生成model代码,节省时间,专注写业务代码。 ThinkPHP中的命令行也提供了一些生成代码的命令: make:controller 创建控制器 make:model 创建模型 m…

spring复习:(17)ClassPathXmlApplicationContext

类继承图如下: 其中的父类AbstractRefreshableApplicationContext中定义了一个DefaultListableBeanFactory对象: Nullableprivate DefaultListableBeanFactory beanFactory;AbstractApplicationContext中定义了obtainFreshBeanFactory方法 protected ConfigurableL…

你知道mp3转换器怎么用吗?分享在线音频转换mp3怎么弄

飒飒:嘿,你有没有想过如何将在线音频转换为mp3格式? 潇潇:是的,我确实有过这个需求。在网上找到了一些工具和方法,可以帮助我们完成这个任务。 飒飒:那太好了!你能告诉我一些详细的…

HTML中用户注册倒计时案例

一、代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><…

el-table 动态合并不定项多级表头

我们的需求是根据不同的厂配不同的多级表头,每个表头有需要合并的项,并且不确定 如图所示 对表格进行循环操作,此处不赘述,最下方有全部代码 表头是单独写在js方便后期更改,然后引入js文件,然后根据情况去调取 // 获取表头getHeader(nv) {this.factoryCodes nv;this.heade…

KingFusion通过动态库的方式连接KingIOServer数据

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 本节主要测试KingFusion通过动态库接入KingIOServer数据&#xff0c;实现快速订阅、回写实时数据及客户端展示的操作。 说明&#xff1a; 1、Windows版本:KingFunsion与KingIOServer数据交互时&#xff0c;使用动态库…

python中应用requests库模拟postman请求携带token,使用get和post方法请求头携带token

背景&#xff1a; 实际开发中&#xff0c;Python程序中需要调用后台接口&#xff0c;充当前端&#xff0c;后端规定请求头需要携带token 封装的get和post类: class RequestMethodCarryJson:"""定义请求类型以json方式传递参数"""def __init__…

欧姆龙NJ1P2 Fins Udp通讯

NJ1P2 Tcp连接不成功&#xff0c;咨询客服说不支持Fins Tcp&#xff0c;所以改成Udp方式。 Udp连接&#xff1a; locateIp IPAddress.Parse(txtLocateIP.Text); locatePoint new IPEndPoint(locateIp, Convert.ToInt32(txtLocatePort.Text)); udpCl…

刷题记录02

题目1 解析: 遍历字符串&#xff0c;使用cur去记录连续的数字串&#xff0c; 如果遇到不是数字字符&#xff0c;则表示一个连续的数字串结束了&#xff0c; 则将数字串跟之前的数字串比较&#xff0c;如果更长&#xff0c;则更新更长的数字串更新到ret。 具体代码: import jav…

线上阿里云短信盗刷问题实录

背景 营销系统中有定时任务处理将待支付订单变更为已取消,执行时间五分钟一次.业务执行处理异常会发送短信给相关开发人员进行短信提醒.从下午一点二十五开始,开发人员间隔五分钟就会收到业务执行异常的短信提醒.最初因为测试或是正式环境中确实有异常的业务,才会出现这个情况,…

C++结合EasyX写扫雷(new)

【游戏】C结合EasyX写扫雷&#xff08;时隔半年后重写&#xff09; 上一次写扫雷这一次实现思路设置全局变量Grid类Grid类的成员函数启动画面死循环监听鼠标事件 全部代码其他 上一次写扫雷 大约半年之前的寒假期间&#xff0c;我接触了EasyX这个图形库&#xff0c;于是试着写…

antd design 4 版本,表格操作列文字间隔小竖线

组件库可以直接使用 <Divider typevertical /> 时小记&#xff0c;终有成。