返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始
开启辅助访问

登录  | 注册成为修仙之旅的少年~

游客您好!登录后享受更多精彩

QQ登录

只需一步,快速开始

查看: 706|回复: 0

[原创] 【原创】折线图项目实战

[复制链接]
发表于 2025-4-28 19:40:08 | 显示全部楼层 |阅读模式
# 折线图项目实战

"""
什么是json
· json是一种轻量级的数据交互格式。可以按照json指定的格式去组织和封装数据。
· json本质上是一个带有特定格式的字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互,类似于:
· 国际通用语言-英语
· 中国56个民族不同地区的通用语言-普通话

json有什么用
· 各种编程语言存储数据的容器不尽相同,在python中有字典dict这样的数据类型,而其他语言可能没有对应的字典。

为了让不同的语言能够相互通用的互相传递数据,json就是一种非常良好的中转数据格式。如下图,以python和c语言互传数据为例。



json格式数据转化
· json格式的数据要求很严格
# json数据的格式可以是:
{"name":"admin","age":18}
# 也可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]

pyecharts模块
· 如果想要做出数据可视化效果图,可以借助pyecharts模块来完成

概况:
· Echarts是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,而python是门富有表达力的语言,
很适合用于数据处理,当数据分析遇上数据可视化时,pyecharts诞生了。



pyecharts配置:
· pyecharts模块中有很多的配置选项,常用到2个类别的选项:
    · 全局配置选项
        全局配置选项可以通过set_global_opts方法来进行配置,相应的选项和选项功能如下:



    · 系列配置选项
"""

# 导入json模块
import json

# 导入pyecharts包charts模块Line功能
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts,LabelOpts

# 准备符合json格式要求的python数据
date= [{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]

# 通过json.dumps()方法把python数据转化为了json数据
# 注意,默认如果不加上ensure_ascii指定参数,则中文输出会转码成ASCII编码格式,需要添加ensure_ascii=False来指定不转换ASCII编码格式。
json_date = json.dumps(date,ensure_ascii=False)

print(json_date)

# 通过json.loads()方法把json数据转化为了python数据
print(json.loads(json_date))
# 创建折线图对象
line_var=Line()
# 折线图x轴坐标赋值
line_var.add_xaxis(["张三","李四","赵五"])
# 折线图y轴坐标赋值
line_var.add_yaxis("年龄",[21,17,30])

# 图表全局设置
line_var.set_global_opts(
    title_opts=TitleOpts(title="年龄展示",pos_left="center",pos_top="1%"),      # 标题设置,pos_left是左定位,pos_top是顶部定位
    legend_opts=LegendOpts(is_show=True),                                       # 图例显示
    toolbox_opts=ToolboxOpts(is_show=True),                                     # 工具箱显示
    visualmap_opts=VisualMapOpts(is_show=True)                                  # 视觉映射显示
)

line_var.render()

us_f = open("F:/美国.txt","r",encoding="UTF-8")
us_date = us_f.read()
us_f.close()

jp_f = open("F:/日本.txt","r",encoding="UTF-8")
jp_date = jp_f.read()
jp_f.close()

in_f = open("F:/印度.txt","r",encoding="UTF-8")
in_date = in_f.read()
in_f.close()

us_date = us_date.replace("jsonp_1629344292311_69436(","")
us_date = us_date[:-2]
dict_us_date = json.loads(us_date)

jp_date = jp_date.replace("jsonp_1629350871167_29498(","")
jp_date = jp_date[:-2]
dict_jp_date = json.loads(jp_date)

in_date = in_date.replace("jsonp_1629350745930_63180(","")
in_date = in_date[:-2]
dict_in_date = json.loads(in_date)

update_date_us_x = dict_us_date["data"][0]["trend"]["updateDate"][0:314]
update_date_us_y = dict_us_date["data"][0]["trend"]["list"][0]["data"][0:314]

print(update_date_us_x)
print(update_date_us_y)

update_date_jp_x = dict_jp_date["data"][0]["trend"]["updateDate"][0:314]
update_date_jp_y = dict_jp_date["data"][0]["trend"]["list"][0]["data"][0:314]

print(update_date_jp_x)
print(update_date_jp_y)

update_date_in_x = dict_in_date["data"][0]["trend"]["updateDate"][0:314]
update_date_in_y = dict_in_date["data"][0]["trend"]["list"][0]["data"][0:314]

print(update_date_in_x)
print(update_date_in_y)

pro_line = Line()
# 折线图x轴坐标赋值--X轴是共用的,所以用一个国家的即可
pro_line.add_xaxis(update_date_us_x)
# 折线图y轴坐标赋值,LabelOpts(is_show=False)意思是取消折线上的数值标识
pro_line.add_yaxis("美国新冠确诊数据",update_date_us_y,label_opts=LabelOpts(is_show=False))
pro_line.add_yaxis("日本新冠确诊数据",update_date_jp_y,label_opts=LabelOpts(is_show=False))
pro_line.add_yaxis("印度新冠确诊数据",update_date_in_y,label_opts=LabelOpts(is_show=False))

# 图表全局设置
pro_line.set_global_opts(
    title_opts=TitleOpts(title="新冠确诊数据",pos_left="center",pos_bottom="1%"),      # 标题设置,pos_left是左定位,pos_top是顶部定位
    legend_opts=LegendOpts(is_show=True),                                       # 图例显示
    toolbox_opts=ToolboxOpts(is_show=True),                                     # 工具箱显示
    visualmap_opts=VisualMapOpts(is_show=True)                                  # 视觉映射显示
)

pro_line.render()

# 最后图片生成如下:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
 楼主| 发表于 2025-4-28 19:41:23 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

DA论坛飞机票来了~

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表