2024.5.25.python.exercise

python 复制代码
# # 导入数据处理的包
# # from pyecharts.charts import Line
# # from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts, LabelOpts
# # import json
# #
# # # 打开文件
# # file_us = open("美国.txt", "r", encoding="UTF-8")
# # file_jp = open("日本.txt", "r", encoding="UTF-8")
# # file_in = open("印度.txt", "r", encoding="UTF-8")
# #
# # # 读文件
# # us_data = file_us.read()
# # jp_data = file_jp.read()
# # in_data = file_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 转化为字典
# # us_data = json.loads(us_data)
# # jp_data = json.loads(jp_data)
# # in_data = json.loads(in_data)
# #
# # # 得到trend数据
# # us_trend_data = us_data["data"][0]["trend"]
# # jp_trend_data = jp_data["data"][0]["trend"]
# # in_trend_data = in_data["data"][0]["trend"]
# #
# # # 得到x轴的数据(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]
# #
# # # 得到y轴的数据(y轴数据是三个国家的数据)
# # 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轴
# # 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%"),
# #     legend_opts=LegendOpts(is_show=True),
# #     toolbox_opts=ToolboxOpts(is_show=True),
# #     visualmap_opts=VisualMapOpts(is_show=True)
# # )
# #
# # # 生成图
# # line.render()
# #
# # # 关闭文件
# # file_us.close()
# # file_jp.close()
# # file_in.close()
#
#
# # 导入要用到的包
# import json
# from pyecharts.charts import Line
# from pyecharts.options import LabelOpts, TitleOpts, ToolboxOpts, VisualMapOpts, LegendOpts
#
# # 读文件
# file_us = open("美国.txt", "r", encoding="UTF-8")
# file_jp = open("日本.txt", "r", encoding="UTF-8")
# file_in = open("印度.txt", "r", encoding="UTF-8")
# us_data = file_us.read()
# jp_data = file_jp.read()
# in_data = file_in.read()
#
# # 读取完毕,关闭文件
# file_us.close()
# file_jp.close()
# file_in.close()
#
# # 规整文件内容
# 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转化为字典
# us_data = json.loads(us_data)
# jp_data = json.loads(jp_data)
# in_data = json.loads(in_data)
#
# # 得到每个国家的trend
# us_trend = us_data["data"][0]["trend"]
# jp_trend = jp_data["data"][0]["trend"]
# in_trend = in_data["data"][0]["trend"]
#
# # 得到x轴内容
# us_x = us_trend["updateDate"][:314:]
# jp_x = jp_trend["updateDate"][:314:]
# in_x = in_trend["updateDate"][:314:]
#
# # 得到y轴内容
# us_y = us_trend["list"][0]["data"][:314:]
# jp_y = jp_trend["list"][0]["data"][:314:]
# in_y = in_trend["list"][0]["data"][:314:]
#
# #开始画线
# line = Line()
#
# # 创建x轴
# line.add_xaxis(us_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%"),
#     legend_opts=LegendOpts(is_show=True),
#     toolbox_opts=ToolboxOpts(is_show=True),
#     visualmap_opts=VisualMapOpts(is_show=True)
# )
#
# # 生成图
# line.render()




# # 导入地图构建使用的包
# from pyecharts.charts import Map
# from pyecharts.options import VisualMapOpts
#
# # 创建一个地图
# China_map = Map()
#
# # 给地图准备数据
# data = [
#     ("北京市", 100),
#     ("上海市", 95),
#     ("深圳市", 90),
#     ("重庆市", 80),
#     ("四川省", 15)
# ]
#
# # 给地图添加数据
# China_map.add("中国城市发展地图", data, "china")
#
# # 设置全局变量
# China_map.set_global_opts(
#     visualmap_opts=VisualMapOpts(
#         is_show=True,
#         is_piecewise=True,
#         pieces=[
#             {"min": 1, "max": 19, "label": "1-19", "color": "#CCFFFF"},
#             {"min": 20, "max": 39, "label": "20-39", "color": "#FFFF99"},
#             {"min": 40, "max": 59, "label": "40-59", "color": "#FF9966"},
#             {"min": 60, "max": 79, "label": "60-79", "color": "#FF6666"},
#             {"min": 80, "max": 100, "label": "80-99", "color": "#CC3333"}
#         ]
#     )
# )
#
# # 生成地图
# China_map.render()


# # 导入疫情地图需要的包
# import json
# from pyecharts.charts import Map
# from pyecharts.options import VisualMapOpts
#
# # 打开需要的数据文件
# China_map = open("疫情.txt", "r", encoding="UTF-8")
# Ch_map = China_map.read()
#
# # 关闭文件
# China_map.close()
#
# # 得到所有地区数据
# area_map = json.loads(Ch_map)
# area_map = area_map["areaTree"][0]["children"]
#
# # 将数据成对封装成元组,然后再将元组封装至列表中,然后用列表给地图提供数据
# China_list = []
# for province in area_map:
#     province_name = province["name"] + "省"
#     province_confirm = province["total"]["confirm"]
#
#     China_list.append((province_name, province_confirm))
#
# # 创建一个疫情地图
# China_Map = Map()
#
# # 为疫情地图加入数据
# China_Map.add("中国全国新冠确诊人数图", China_list, "china")
#
# # 为疫情地图调整全局设置,使得更加美观
# China_Map.set_global_opts(
#     visualmap_opts=VisualMapOpts(
#         is_show=True,
#         is_piecewise=True,
#         pieces=[
#             {"min": 1, "max": 99, "label": "1-99人确诊", "color": "#CCFFFF"},
#             {"min": 100, "max": 1999, "label": "100-1999人确诊", "color": "#FFFF99"},
#             {"min": 2000, "max": 9999, "label": "2000-9999人确诊", "color": "#FF9966"},
#             {"min": 10000, "max": 39999, "label": "10000-39999人确诊", "color": "#FF6666"},
#             {"min": 40000, "label": "40000人以上确诊", "color": "#CC3333"}
#         ]
#     )
# )
#
# # 生成疫情地图
# China_Map.render()

# 导入生成重庆疫情地图的包
import json
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts

# 读数据文件
cq_file = open("疫情.txt", "r", encoding="UTF-8")
cq_data = cq_file.read()

# 关闭文件
cq_file.close()

# 将数据定位到重庆
cq_data = json.loads(cq_data)
cq_data = cq_data["areaTree"][0]["children"][18]["children"]

# 将区县名字取出,和每个区县的确诊人数构成元组存入列表
cq_list = []
for area in cq_data:
    area_name = area["name"]
    area_confirm = area["total"]["confirm"]
    cq_list.append((area_name, area_confirm))

# 创造一个地图
cq_map = Map()

# 向重庆疫情地图中加入值
cq_map.add("重庆新冠确诊人数图", cq_list, "重庆")

# 调整重庆疫情地图的全局设置(主要是改变颜色)
cq_map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min": 1, "max": 9, "label": "1-9人确诊", "color": "#FFFF99"},
            {"min": 10, "max": 19, "label": "10-19人确诊", "color": "#FF9966"},
            {"min": 20, "max": 29, "label": "20-29人确诊", "color": "#FF6666"},
            {"min": 30, "label": "30人以上确诊", "color": "#CC3333"},
        ]
    )
)

# 生成重庆的疫情地图
cq_map.render()




















#
# # 导入柱状图的包
# from pyecharts.charts import Bar
#
# # 创建一个柱状图
# bar1 = Bar()
# bar1.add_xaxis(["中国", "美国", "英国"])
# bar1.add_yaxis("1900年GDP总量", [10, 20, 30])
#
# # 生成图
# bar1.render()
#
# # 导入时间图的包
# from pyecharts.charts import Bar
# from pyecharts.options import VisualMapOpts
# from pyecharts.charts import Timeline
# from pyecharts.globals import ThemeType
#
# # 根据时间点创建多个坐标图
# bar1 = Bar()
# bar1.add_xaxis(["中国", "美国", "英国"])
# bar1.add_yaxis("GDP", [10, 20, 30])
#
# bar2 = Bar()
# bar2.add_xaxis(["中国", "美国", "英国"])
# bar2.add_yaxis("GDP", [40, 120, 85])
#
# bar3 = Bar()
# bar3.add_xaxis(["中国", "美国", "英国"])
# bar3.add_yaxis("GDP", [500, 600, 430])
#
# # 创建时间轴
# timeline = Timeline({"theme": ThemeType.LIGHT})
# timeline.add(bar1, "1900年GDP总量")
# timeline.add(bar2, "1949年GDP总量")
# timeline.add(bar3, "2024年GDP总量")
#
# # 调整时间轴播放
# timeline.add_schema(
#     play_interval=3000,
#     is_timeline_show=True,
#     is_auto_play=True,
#     is_loop_play=True
# )
#
# # 生成时间轴图
# timeline.render("从清朝到现在的三国GDP变化.html")


# 最后一舞(1960-2019年全球GDP top8变化图)
# 导包
from pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts, TitleOpts
from pyecharts.globals import ThemeType

# 读取数据文件信息
GDP_f = open("1960-2019全球GDP数据.csv", "r", encoding="GB2312")
GDP_data = GDP_f.readlines()  # GDP_data 是列表

# 关闭文件
GDP_f.close()

# 规整数据文件信息
GDP_data.pop(0)

# 定义一个字典来存储数据
GDP_data_dict = {}
for line in GDP_data:
    year = int(line.split(",")[0])  # 得到年份
    country = line.split(",")[1]  # 得到国家
    GDP = float(line.split(",")[2])  # 得到GDP(因为有些数字是科学计数法,所以说转化为float来用)
    try:
        GDP_data_dict[year].append([country, GDP])
    except KeyError:
        GDP_data_dict[year] = []
        GDP_data_dict[year].append([country, GDP])

# 构建timeline对象
timeline = Timeline({"theme": ThemeType.LIGHT})

# 排序数据对象
sort_year = sorted(GDP_data_dict.keys())

for years in sort_year:
    GDP_data_dict[years].sort(key=lambda element: element[1], reverse=True)
    year_data = GDP_data_dict[years][0:8]  # 只取得某一年中GDP前八的国家
    x_data = []
    y_data = []
    for country_gdp in year_data:     # 从GDP前8的国家里面再取,作为柱状图的x-y轴
        x_data.append(country_gdp[0])  # 国家名字
        y_data.append(country_gdp[1] / 100000000)  # 国家当年的GDP

    # 建立柱状图
    bar = Bar()
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))

    # 反转x-y轴
    bar.reversal_axis()

    # 设置每一年的标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{years}年全球前八国家的GDP")
    )

    # 创建时间线
    timeline.add(bar, str(years))  # 添加一个时间线

# 调整时间轴播放
timeline.add_schema(
    play_interval=3000,  # 时间移动的时间
    is_timeline_show=True,  # 展示时间线
    is_auto_play=True,  # 自动播放
    is_loop_play=True  # 循环播放
)

# 生成柱状图
timeline.render("1960-2019年全球GDP top8变化图.html")
相关推荐
青 春 记 忆4 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO34 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
临沂GEO7 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白7 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲8 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)10 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机10 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor69211 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy11 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽12 小时前
真实即粗糙,光滑是伪造
人工智能·python