第十、十一章 折线图 + 地图 + 柱状图的绘制

news2024/9/23 13:16:01

 第十章  折线图的绘制

 官网:pyecharts - A Python Echarts Plotting Library built with love.

画廊官网:Document

懒人工具:懒人工具-手机APP工具下载-手机软件下载大全 - 173软件站 (ab173.com)

导学

json

定义

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

(2)JSON本质上是一个带有特定格式的字符串。

功能

json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。类似于

python数据和json数据的相互转化

python和json格式是可以无缝切换的,json是字符串

json就是把Python中:

  1. 列表(该列表的元素都是字典),把该列表也变成字符串
  2. 字典转化为字符串

import json
# 准备列表,列表内每一个元素都是字典,将其转换为json
data = [{"name":"张大山", "age": 11}, {"name":"王大锤", "age": 13}, {"name":"赵小虎", "age": 16}]
json_str = json.dumps(data, ensure_ascii=False) 
print(type(json_str))
print(json_str)

# 准备字典,将字典转换为json
d = {"name": "周杰伦", "addr": "台北"}
json_str = json.dumps(d, ensure_ascii=False)
print(type(json_str))
print(json_str)

# 将json字符串转换为python数据类型[{k: v, k: v}, {k: v, k: v}]
s = '[{"name":"张大山", "age": 11}, {"name":"王大锤", "age": 13}, {"name":"赵小虎", "age": 16}]'
l = json.loads(s)
print(type(l))
print(l)

# 将json字符串转换为python数据类型{k: v, k: v}
s = '{"name": "周杰伦", "addr": "台北"}'
d = json.loads(s)
print(type(d))
print(d)
<class 'str'>
[{"name": "张大山", "age": 11}, {"name": "王大锤", "age": 13}, {"name": "赵小虎", "age": 16}]
<class 'str'>
{"name": "周杰伦", "addr": "台北"}
<class 'list'>
[{'name': '张大山', 'age': 11}, {'name': '王大锤', 'age': 13}, {'name': '赵小虎', 'age': 16}]
<class 'dict'>
{'name': '周杰伦', 'addr': '台北'}

另注:

pyecharts

简介

安装

测试安装成功与否

入门使用

# 从pyecharts包中的charts模块中导入Line功能
from pyecharts.charts import Line
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)
)
# 通过render方法,将代码生成为图像
line.render()


pyecharts模块中有很多的配置选项,常用到2个类别的选项包括:

  1. 全局配置选项:针对整个图像进行设置,例如:图像的标题、图例、工具箱等
  2. 系列配置选项:针对具体的轴数据进行设置

全局配置选项

  •       title_opts :表示标题组件的配置项。
  •       legend_opts:表示图例组件的配置项。
  •       tooltip_opts : 表示提示框组件的配置项。
  •       toolbox_opts :表示工具箱组件的配置项。
  •       brush_opts:表示区域选择组件的配置项。
  •       xaxis_opts,yaxis_opts:表示x轴、y轴的配置项。
  •       visualmap_opts :表示视觉映射组件的配置项。
  •       datazoom_opts :表示数据区域缩放组件的配置项。

案例:美、日、印疫情

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts

# 处理数据
f_us = open("C:/Users/18757/Desktop/pythontext/美国.txt", "r", encoding = "UTF-8")
us_data = f_us.read()

f_jp = open("C:/Users/18757/Desktop/pythontext/日本.txt", "r", encoding = "UTF-8")
jp_data = f_jp.read()

f_in = open("C:/Users/18757/Desktop/pythontext/印度.txt", "r", encoding = "UTF-8")
in_data = f_in.read()

# 去除开头不要的数据
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
in_data = in_data.replace("jsonp_1629350745930_63180(", "")

# 去除结尾不要的数据
us_data = us_data[:-2]
jp_data = jp_data[:-2]
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字典数据
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轴,取2020年(到314下标结束)
x_data = us_trend_data["updateDate"][:314]

# 获取疫情数据,用于y轴,取2020年(到314下标结束)
us_y_data = us_trend_data["list"][0]["data"]
jp_y_data = jp_trend_data["list"][0]["data"]
in_y_data = in_trend_data["list"][0]["data"]

# 生成图表
line = Line()

# 添加x轴数据
line.add_xaxis(x_data)

# 添加y轴数据
line.add_yaxis("美国确诊人数",us_y_data, label_opts=False) # label_opts是控制数值是否显示的
line.add_yaxis("日本确诊人数",jp_y_data, label_opts=False)
line.add_yaxis("印度确诊人数",in_y_data, label_opts=False)

# 设置全局配置项set_global_opts来设置
line.set_global_opts(
    title_opts=TitleOpts(is_show=True,title="2020年美日印三国确诊人数对比折线图",pos_bottom="1%",pos_left="center")
)


line.render()

 第十一章  地图的绘制

基础地图使用


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":"#275612"},
            {"min":10, "max":99, "label":"10-99","color":"#FFE4B5"},
            {"min":100, "max":500, "label":"100-500","color":"#E6E6FA"},
        ]
    )
)

map.render()

全国疫情地图构建

import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts, VisualMapOpts
# 读取数据文件
f = open("C:/Users/18757/Desktop/pythontext/疫情.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("全国疫情地图"),
    visualmap_opts = VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min":1, "max":99, "label":"1-99人","color":"#CCFFFF"},
            {"min":100, "max":999, "label":"1-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")

import json
from pyecharts.charts import Map
from pyecharts.options import TitleOpts, VisualMapOpts
# 读取数据文件
f = open("C:/Users/18757/Desktop/pythontext/疫情.txt", "r", encoding = "UTF-8")
data = f.read()

# 关闭文件
f.close()

# 将字符串json转换为python的字典
data_dict = json.loads(data)

# 从字典中取到河南省数据
henan_province_data_list = data_dict["areaTree"][0]["children"][3]["children"]
# 组装河南省每个城市名字和该城市确诊人数为元组、并将该元组都封装入列表内
data_list = []
for henan_province_data in henan_province_data_list:
    henan_province_name = henan_province_data["name"] + "市"
    henan_province_confirm = henan_province_data["total"]["confirm"]
    data_list.append((henan_province_name, henan_province_confirm))
# 创建地图对象
map = Map()

# 添加数据
map.add("河南省确诊人数", data_list, "河南")

# 设置全局配置、定制分段的视觉映射
map.set_global_opts(
    title_opts = TitleOpts("河南省疫情地图"),
    visualmap_opts = VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min":1, "max":99, "label":"1-99人","color":"#CCFFFF"},
            {"min":100, "max":999, "label":"1-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")

第十二章 柱状图的构建

基础柱状图

# 使用Bar构建基础柱状图
from pyecharts.charts import Bar
from pyecharts.options import LabelOpts
bar = Bar()
# 添加x轴的数据
bar.add_xaxis(["中国", "美国", "英国"])
# 添加y轴的数据
bar.add_yaxis("GDP",[30, 20, 10], label_opts=LabelOpts(position="right")) # 设置数值标签在右侧
# 反转x轴和y轴
bar.reversal_axis()

bar.render("基础柱状图.html")

基础时间线柱状图创建

设置自动播放

时间线设置主题

# 使用Bar构建基础柱状图
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType

bar1 = Bar()
bar1.add_xaxis(["中国", "美国", "英国"])
bar1.add_yaxis("GDP",[30, 20, 10], label_opts=LabelOpts(position="right")) # 设置数值标签在右侧
bar1.reversal_axis()

bar2 = Bar()
bar2.add_xaxis(["中国", "美国", "英国"])
bar2.add_yaxis("GDP",[50, 50, 50], label_opts=LabelOpts(position="right")) # 设置数值标签在右侧
bar2.reversal_axis()

bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP",[70, 60, 60], label_opts=LabelOpts(position="right")) # 设置数值标签在右侧
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("基础时间线柱状图创建.html")

动态GDP柱状图绘制

  

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

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

相关文章

Flask 数据库前后端交互案例-1

Flask 数据库前后端交互案例 目录结构templates目录base.htmlheader.htmlleft.html首页职员管理页面添加员工界面员工编辑页面员工详情界面 后台main.pyapp.pymodels.pyviews.py 数据库数据position.sqlperson.sqlpermission.sqldepartment.sql 目录结构 静态文件链接&#xff…

工装行业项目管理系统哪家好?找企智汇工程项目管理系统!

在工装行业&#xff0c;项目管理是至关重要的一环。好的项目管理系统能够提高工装企业的效率、降低成本、提升客户满意度。在这个竞争激烈的市场中&#xff0c;选择一款好的项目管理系统&#xff0c;对于企业的发展至关重要。 今天&#xff0c;我向大家介绍的是企智汇工程项目…

uniapp自定义顶部导航栏

首先uniapp获取设备信息&#xff1a;uni.getSystemInfo或uni.getSystemInfoSync&#xff0c;可用于设置顶部安全区 留一个设备安全区的位置哦 然后在pages.json文件里配置自定义导航栏 {"pages": [ //pages数组中第一项表示应用启动页&#xff0c;参考&#xff1a…

如何使用 ArcGIS Pro 快速为黑白地图配色

对于某些拍摄时间比较久远的地图&#xff0c;限于当时的技术水平只有黑白的地图&#xff0c;针对这种情况&#xff0c;我们可以通过现在的地图为该地图进行配色&#xff0c;这里为大家讲解一下操作方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微…

windows SDK编程 --- 消息(3)

前置知识 一、消息的分类 1. 鼠标消息 处理与鼠标交互相关的事件&#xff0c;比如移动、点击和滚动等。例如&#xff1a; WM_MOUSEMOVE: 当鼠标在窗口客户区内移动时发送。WM_LBUTTONDOWN: 当用户按下鼠标左键时发送。WM_LBUTTONUP: 当用户释放鼠标左键时发送。WM_RBUTTOND…

Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件

Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件 NX-OS 网络操作系统 请访问原文链接&#xff1a;Cisco NX-OS Software Release 10.4(3)F - 网络操作系统软件&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Cisc…

K8s: Ingress对象, 创建Ingress控制器, 创建Ingress资源并暴露服务

Ingress对象 1 &#xff09;概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTPIngress-nginx 本质是网关&#xff0c;当你请求 abc.com/service/a, Ingress 就把对应的地址转发给你&#xff0c;底层运行了一个 nginx但 K8s 为什么不…

通义灵码牵手阿里云函数计算 FC ,打造智能编码新体验

通义灵码自成功入职阿里云后&#xff0c;其智能编程助手的角色除了服务于阿里云内部几万开发者&#xff0c;如今进一步服务函数计算 FC 产品开发者。近日&#xff0c;通义灵码正式进驻函数计算 FC WebIDE&#xff0c;让使用函数计算产品的开发者在其熟悉的云端集成开发环境中&a…

yolov5 的几个问题,讲的比较清楚

yolov5, 几个问题 【BCELoss】pytorch中的BCELoss理解 三个损失函数原理讲解 https://zhuanlan.zhihu.com/p/458597638 yolov5源码解析–输出 YOLOv5系列(十) 解析损失部分loss(详尽) 1、输入数据是 xywh, 针对原图的, 然后,变成 0-1, x/原图w, y/原图h, w/原图w, h/原图h,…

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

目录 1、TCP通信 1.1、Socket 和 ServerSocket 1.3、TCP通信示例 2、UDP的三种通信&#xff08;数据传输&#xff09;方式 1、TCP通信 TCP通信协议是一种可靠的网络协议&#xff0c;它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立&#xff08;注意TCP是一…

从win10升级到win11后,安全中心没有病毒防护的解决办法

从win10升级到win11后&#xff0c;安全中心没有病毒防护的解决办法 问题就是Win11的安全中心打开没有病毒和威胁防护选项&#xff08;不装其它第三方防病毒软件的情况下&#xff09;。 这可能是因为注册表出了问题。 具体操作如下&#xff1a; 点击Windows左下角搜索栏&…

使用JavaScript及HTML、CSS完成秒表计时器

案例要求 1.界面为一个显示计时面板和三个按钮分别为:开始&#xff0c;暂停&#xff0c;重置 2.点击开始&#xff0c;面板开始计时&#xff0c; 3.点击暂停&#xff0c;面板停止 4.点击重置&#xff0c;计时面板重新为0 案例源码 <!DOCTYPE html> <html lang"…

echart-better基于最新的echarts5.5标题旋转功能

使用教程以及相关的echarts-better最新的包在这里&#xff1a;https://edu.csdn.net/course/detail/24569 echarts在侧边竖向展示标题&#xff0c;以及次标题 主标题和次标题进行旋转&#xff0c;适用于移动端或其他场景。

Azure AD统一认证及用户数据同步开发指导

本文主要目的为&#xff1a;指导开发者进行自有服务与Azure AD统一认证的集成&#xff0c;以及阐述云端用户数据同步的实现方案。本文除了会介绍必要的概念、原理、流程外&#xff0c;还会包含Azure门户设置说明&#xff0c;以及使用Fiddler进行全流程的实操验证&#xff0c;同…

.net core webapi 添加日志管理看板LogDashboard

.net core webapi 添加日志管理看板LogDashboard 添加权限管理&#xff1a; 我们用的是Nlog文件来配置 <?xml version"1.0" encoding"utf-8" ?> <nlog xmlns"http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi"http:/…

CSS基础:浮动(float)的3种方式,清除浮动3种方式的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

iOS - Runloop在实际开发中的应用

文章目录 iOS - Runloop在实际开发中的应用1. 控制线程生命周期&#xff08;线程保活&#xff09;2. 解决NSTimer在滑动时停止工作的问题2.1. 案例2.2 解决 3. 监控应用卡顿4. 性能优化 iOS - Runloop在实际开发中的应用 1. 控制线程生命周期&#xff08;线程保活&#xff09;…

linux系统安全与应用【下】

目录 1.开关机安全控制 1.1GRUB限制 2.终端登录安全控制 2.1 限制root只在安全终端登录 2.2 禁止普通用户登录 3.弱口令检测 3.1 Joth the Ripper&#xff08;JR&#xff09; 4.网络端口扫描 4.1 nmap命令 1.开关机安全控制 1.1GRUB限制 通常情况下在系统开机进入GRU…

Java微服务架构之Spring Boot —上篇

SpringBoot 概述 SpringBoot提供了一种快速使用Spring的方式&#xff0c;基于约定优于配置的思想&#xff0c;可以让开发人员不必在配置与逻辑业务之间进行思维的切换&#xff0c;全身心的投入到逻辑业务的代码编写中&#xff0c;从而大大提高了开发的效率&#xff0c;一定程度…

模板初阶

泛型编程&#xff1a; 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;模板是泛型编程的基础 class Test { public:void Swap(int& left, int& right){int tmp left;left right;right tmp;}void Swap(double& left, double& right){double tmp…