实验四:地理数据可视化 您所在的位置:网站首页 山东确诊人数统计图表 实验四:地理数据可视化

实验四:地理数据可视化

2023-12-29 12:49| 来源: 网络整理| 查看: 265

实验四:地理数据可视化 实验目的

掌握地理数据可视化的原理和方法。

实验内容

分析2020 新冠疫情。要求利用已有数据(CityData.xlsx)与已有工具,设计可视化方案,展示2020年全国新冠患者人数随时间的变化过程,并完成以下任务。

任务一:统计截止4月1日各省的累计确诊数量,并通过图表展示。

任务二:对每日各省的累计确诊患者数量进行统计,为图像添加时间轴,通过时间轴自动播放演示疫情发展的整个过程。 在这里插入图片描述

实验过程 任务一: import openpyxl import datetime from pyecharts import options as opts from pyecharts.charts import Map def dataHandle(sheet, useless_row, useless_col): # 对表中数据进行预处理 sheet.delete_cols(useless_col) sheet.delete_rows(useless_row) return sheet def get_province(sheet,col): # 获得表中所有的省份,并返回省份:确诊人数的字典 mySet = set() data_require = sheet[col] for cell in data_require: value = cell.value mySet.add(value) my_dict = {item: 0 for item in mySet} return my_dict def get_confirmed_cases(sheet,data_dict,date_tuple): # 获取确诊人数 rawdata = [] flag = 0 # 获取到数据的数量 targetDate = datetime.datetime(date_tuple[0], date_tuple[1], date_tuple[2]) # 获得截止到4月1日各省的累计确诊,如果4月1日数据丢失,则寻找最接近一天的数据 while 1: for row in sheet.iter_rows(values_only=True): if row[6] == targetDate: rawdata.append(row) for i in rawdata: if data_dict[i[0]] == 0: data_dict[i[0]] += i[2] flag = flag+1 if flag == len(data_dict): break else: targetDate = targetDate - datetime.timedelta(days=1) return data_dict if __name__ == "__main__": # 导入工作簿 workbook = openpyxl.load_workbook('exp3/mission-1/CityData.xlsx') # 导入工作表 sheet = workbook.worksheets[0] # print(workbook.active) # 数据处理 # 去掉无关项 row = 1 col = 1 sheet = dataHandle(sheet,row,col) data_dict = get_province(sheet,'A') data_dict = get_confirmed_cases(sheet,data_dict, (2020,4,1)) # 绘图 c = ( Map() # 全局配置项 .set_global_opts( title_opts=opts.TitleOpts(title="确诊人数统计图"), visualmap_opts=opts.VisualMapOpts( max_=51000, is_piecewise=True, pieces=[ {"min": 0, "max": 10, "color": "#9ACD32"}, {"min": 10, "max": 100, "color": "#87CEEB"}, {"min": 100, "max": 200, "color": "#FFD700"}, {"min": 200, "max": 400, "color": "#FFA07A"}, {"min": 400, "max": 500, "color": "#FFA500"}, {"min": 500, "max": 51000, "color": "#FF0000"}, ] ), ) # 将data_dict作为数据映射到表中 .add("截止到2020年4月1日的确诊人数", [list(z) for z in data_dict.items()], "china") # 渲染 .render("exp3/mission-1/map_visualmap.html") ) 任务二: import json from pyecharts import options as opts from pyecharts.charts import Map, Timeline if __name__ == "__main__": # 导入处理好的数据 with open('exp3/mission-2/data_dict.json', 'r', encoding='utf-8') as file: data_dict_everyDay = json.load(file) # print(data_dict_everyDay["2020-04-18"]) # 绘图 try: tl = Timeline() for date, value in data_dict_everyDay.items(): my_map = ( Map() # 全局配置项 .set_global_opts( title_opts=opts.TitleOpts(title="确诊人数统计图"), visualmap_opts=opts.VisualMapOpts( max_=51000, is_piecewise=True, pieces=[ {"min": 0, "max": 10, "color": "#9ACD32"}, {"min": 10, "max": 100, "color": "#87CEEB"}, {"min": 100, "max": 200, "color": "#FFD700"}, {"min": 200, "max": 400, "color": "#FFA07A"}, {"min": 400, "max": 500, "color": "#FFA500"}, {"min": 500, "max": 51000, "color": "#FF0000"}, ] ), ) # 将data_dict作为数据映射到表中 .add("2020年1月24日~2020年4月18日确诊人数变化图", [list(z) for z in value.items()], "china") ) tl.add(my_map, date) # 渲染 tl.render("exp3/mission-2/timeline_map.html") except: print("渲染失败") 实验结果

任务一: 在这里插入图片描述

任务二: 在这里插入图片描述 在这里插入图片描述

参考资料

https://pyecharts.org/#/

https://openpyxl.readthedocs.io/en/stable/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有