提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
最近疫情出现新状况,作为一个中国人民怎么能不关注,作此数据处理时才发现已经这么严重了,不过我们可以永远相信自己的国家,风云终会消散。
提示:以下是本篇文章正文内容,下面案例可供参考
1.引入库
代码如下(示例):
from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
import pandas as pd
import numpy as np
2.读入数据
data = pd.read_excel('新型冠状病毒肺炎疫情地图.xlsx', index_col=None)
print(data.head())
3.提取需要数据
这里我将每一列疫情数据与地区结合为一个个列表
# 然后转化为list形式
xy_data_list = np.array(data[['地区', '现有']]).tolist()
xz_data_list = np.array(data[['地区', '新增']]).tolist()
lj_data_list = np.array(data[['地区', '累计']]).tolist()
zy_data_list = np.array(data[['地区', '治愈']]).tolist()
4.绘制中国地图,添加数据
使用pyecharts库绘制中国地图,然后调节对应参数,这里就步详讲了,调参就要一步一步慢慢试。
def map_china() -> Map:
map1 = (
Map()
.add(series_name="现有病例", data_pair=xy_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:现有病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99","color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499","color":"#F08080"},
{"max": 999, "min": 500, "label": "500-999","color":"#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color":"#8B0000"}]
)
)
)
map2 = (
Map()
.add(series_name="新增病例", data_pair=xz_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:新增病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
map3 = (
Map()
.add(series_name="累计病例", data_pair=lj_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:累计病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
map4 = (
Map()
.add(series_name="治愈病例", data_pair=zy_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:治愈病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
每个列表做一个图,然后为了方便,渲染成了轮播图如下步
5.渲染轮播图
如下:设置需要参数,最终呈现:
# 创建组合类对象
timeline = Timeline(init_opts=opts.InitOpts(width='1028px', height='600px'))
# 在组合对象中添加需要组合的图表对象
timeline.add(chart=map1, time_point="现有病例疫情图")
timeline.add(chart=map2, time_point="新增病例疫情图")
timeline.add(chart=map3, time_point="累计病例疫情图")
timeline.add(chart=map4, time_point="治愈病例疫情图")
timeline.add_schema(is_auto_play=True, play_interval=2000)
# 渲染数据
timeline.render('疫情轮播图.html')
效果如下:
动图效果无法展示
总结
以上就是今天要讲的内容,本文仅仅简单制作了今天疫情数据简析用,而pandas,pyechart提供了大量能使我们快速便捷地处理数据的函数和方法,还有更多更好的需要学习呢。
完整代码
from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
import pandas as pd
import numpy as np
data = pd.read_excel('新型冠状病毒肺炎疫情地图.xlsx', index_col=None)
print(data.head())
# 然后转化为list形式
xy_data_list = np.array(data[['地区', '现有']]).tolist()
xz_data_list = np.array(data[['地区', '新增']]).tolist()
lj_data_list = np.array(data[['地区', '累计']]).tolist()
zy_data_list = np.array(data[['地区', '治愈']]).tolist()
print(xy_data_list)
def map_china() -> Map:
map1 = (
Map()
.add(series_name="现有病例", data_pair=xy_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:现有病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99","color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499","color":"#F08080"},
{"max": 999, "min": 500, "label": "500-999","color":"#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color":"#8B0000"}]
)
)
)
map2 = (
Map()
.add(series_name="新增病例", data_pair=xz_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:新增病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
map3 = (
Map()
.add(series_name="累计病例", data_pair=lj_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:累计病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
map4 = (
Map()
.add(series_name="治愈病例", data_pair=zy_data_list, maptype="china", zoom=1, center=[105, 38])
.set_global_opts(
title_opts=opts.TitleOpts(title="疫情地图:治愈病例"),
visualmap_opts=opts.VisualMapOpts(max_=9999, is_piecewise=True,
pieces=[{"max": 9, "min": 0, "label": "0-9", "color": "#FFE4E1"},
{"max": 99, "min": 10, "label": "10-99", "color": "#FF7F50"},
{"max": 499, "min": 100, "label": "100-499", "color": "#F08080"},
{"max": 999, "min": 500, "label": "500-999", "color": "#CD5C5C"},
{"max": 9999, "min": 1000, "label": ">=1000", "color": "#8B0000"}]
)
)
)
# 创建组合类对象
timeline = Timeline(init_opts=opts.InitOpts(width='1028px', height='600px'))
# 在组合对象中添加需要组合的图表对象
timeline.add(chart=map1, time_point="现有病例疫情图")
timeline.add(chart=map2, time_point="新增病例疫情图")
timeline.add(chart=map3, time_point="累计病例疫情图")
timeline.add(chart=map4, time_point="治愈病例疫情图")
timeline.add_schema(is_auto_play=True, play_interval=2000)
# 渲染数据
timeline.render('疫情轮播图.html')
if __name__ == '__main__':
d_map = map_china()