diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/.keep"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bar.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bar.html"
new file mode 100644
index 0000000000000000000000000000000000000000..126c823e8da4b6f7a57b08f4451d09a1140af5d0
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bar.html"
@@ -0,0 +1,225 @@
+
+
+
+
+ Awesome-pyecharts
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bars.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bars.py"
new file mode 100644
index 0000000000000000000000000000000000000000..7ea5096b1cf0fcfb878bed00ab3b896bed3fcafb
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/bars.py"
@@ -0,0 +1,51 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:47
+# software : PyCharm
+
+from pyecharts.charts import Bar
+from pyecharts import options as opts
+from datas import covid_19_data, country_name_map
+
+percent_min_data = min([_['value'][0] for _ in covid_19_data])
+percent_max_data = max([_['value'][0] for _ in covid_19_data])
+vaccinated_min_data = min([_['value'][1] for _ in covid_19_data])
+vaccinated_max_data = max([_['value'][1] for _ in covid_19_data])
+
+
+def _bar():
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data][::-1]
+ yaxis_data = [round(_['value'][1] / 10000, 2) for _ in covid_19_data][::-1]
+ chart_bar = (
+ Bar()
+ .add_xaxis(xaxis_data) # 传入x轴的数据, 格式为[1,2,3,4,5]
+ .add_yaxis(
+ series_name="", # 系列名称
+ y_axis=yaxis_data, # y轴的数据,[num,num,num]
+ label_opts=opts.LabelOpts( # 标签配置
+ position='right', # 标签显示的位置,inside,left,top,bottom
+ formatter="{b}: {c}万" # 标签显示的格式
+ )
+ )
+ .reversal_axis() # x轴y轴倒置
+ .set_global_opts(
+ yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)), # 不显示坐标轴的标签
+ tooltip_opts=opts.TooltipOpts(is_show=False), # 关闭提示,鼠标移动过去不显示
+ visualmap_opts=opts.VisualMapOpts(
+ dimension=0,
+ range_text=['最大值', '最小值'], # 组件两端的文本
+ # is_calculable=True, # 显示组件拖拽手柄
+ # range_color=["lightskyblue", "red", "pink"], # 组件过渡颜色
+ # textstyle_opts=opts.TextStyleOpts(
+ # color="rgba(0,0,0,0.5)" # 文字颜色
+ # ),
+ min_=round(vaccinated_min_data / 10000, 2), # 组件最小值
+ max_=round(vaccinated_max_data / 10000, 2), # 组件最大值
+ )
+ )
+ )
+ return chart_bar
+
+
+chart_bar = _bar()
+chart_bar.render("bar.html")
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/chart_config.json" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/chart_config.json"
new file mode 100644
index 0000000000000000000000000000000000000000..cc399a18ca6043606d7c5e4a318a5fdfb77a925a
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/chart_config.json"
@@ -0,0 +1 @@
+[{"cid":"7cd81b43190b4b93a2f14391cdb97363","width":"900px","height":"500px","top":"427px","left":"-32px"},{"cid":"73a9d0c0c49440f1b256a97de0b00c86","width":"900px","height":"500px","top":"33px","left":"814px"},{"cid":"396e6bbacb524094b937dbf82e79c6f9","width":"900px","height":"500px","top":"33px","left":"-4px"},{"cid":"5c72787bc5ce41a5b3e37aa184b76ce1","width":"900px","height":"500px","top":"32px","left":"371px"},{"cid":"5f69bf3cb67c444ab796afc2692f27f3","width":"900px","height":"500px","top":"335px","left":"357px"},{"cid":"6202e22c7af84a5f9e4f2d177a819be9","width":"900px","height":"500px","top":"423px","left":"817px"}]
\ No newline at end of file
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/datas.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/datas.py"
new file mode 100644
index 0000000000000000000000000000000000000000..38b798c177dc14711474929acb1072e03c047a23
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/datas.py"
@@ -0,0 +1,56 @@
+covid_19_data = [
+ {'name': 'Ukraine', 'value': [0.0, 5, 'Ukraine']},
+ {'name': 'Iceland', 'value': [7.6, 27801, 'Iceland']},
+ {'name': 'Gibraltar', 'value': [88.1, 29692, 'Gibraltar']},
+ {'name': 'Japan', 'value': [0.39, 490819, 'Japan']},
+ {'name': 'France', 'value': [5.4, 3604653, 'France']},
+ {'name': 'Chile', 'value': [24.3, 4643082, 'Chile']},
+ {'name': 'Germany', 'value': [5.9, 4910308, 'Germany']},
+ {'name': 'Israel', 'value': [53.6, 4921648, 'Israel']},
+ {'name': 'Russia', 'value': [3.7, 5401446, 'Russia']},
+ {'name': 'Brazil', 'value': [2.9, 6035017, 'Brazil']},
+ {'name': 'United Kingdom', 'value': [10.5, 6991310, 'United Kingdom']},
+ {'name': 'Turkey', 'value': [9.1, 7579623, 'Turkey']},
+ {'name': 'India', 'value': [0.93, 12709186, 'India']},
+ {'name': 'United States', 'value': [21.5, 70692645, 'United States']},
+ {'name': 'China', 'value': [11.8, 164470000, 'China']}
+]
+
+covid_19_data_ = [
+ {'name': 'China', 'value': [11.8, 164470000, 'China']},
+ {'name': 'Turkey', 'value': [9.1, 7579623, 'Turkey']},
+ {'name': 'India', 'value': [0.93, 12709186, 'India']},
+ {'name': 'France', 'value': [5.4, 3604653, 'France']},
+ {'name': 'Ukraine', 'value': [0.0, 5, 'Ukraine']},
+ {'name': 'Chile', 'value': [24.3, 4643082, 'Chile']},
+ {'name': 'United States', 'value': [21.5, 70692645, 'United States']},
+ {'name': 'Russia', 'value': [3.7, 5401446, 'Russia']},
+ {'name': 'Germany', 'value': [5.9, 4910308, 'Germany']},
+ {'name': 'Iceland', 'value': [7.6, 27801, 'Iceland']},
+ {'name': 'Gibraltar', 'value': [88.1, 29692, 'Gibraltar']},
+ {'name': 'Japan', 'value': [0.39, 490819, 'Japan']},
+ {'name': 'Israel', 'value': [53.6, 4921648, 'Israel']},
+ {'name': 'Brazil', 'value': [2.9, 6035017, 'Brazil']},
+ {'name': 'United Kingdom', 'value': [10.5, 6991310, 'United Kingdom']}
+]
+
+country_name_map = {
+ 'Ukraine': '乌克兰',
+ 'Iceland': '冰岛',
+ 'Gibraltar': '直布罗陀',
+ 'Japan': '日本',
+ 'France': '法国',
+ 'Chile': '智利',
+ 'Germany': '德国',
+ 'Israel': '以色列',
+ 'Russia': '俄罗斯',
+ 'Brazil': '巴西',
+ 'United Kingdom': '英国',
+ 'Turkey': '土耳其',
+ 'India': '印度',
+ 'United States': '美国',
+ 'China': '中国',
+}
+
+# import random
+# random.shuffle(covid_19_data) # 打乱顺序
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/line.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/line.html"
new file mode 100644
index 0000000000000000000000000000000000000000..89f2438b3c7cb02aad91a9cef1b5025113eff165
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/line.html"
@@ -0,0 +1,275 @@
+
+
+
+
+ Awesome-pyecharts
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/lines.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/lines.py"
new file mode 100644
index 0000000000000000000000000000000000000000..7832c8da1050f302aa126865bf0a1039171136e2
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/lines.py"
@@ -0,0 +1,37 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:49
+# software : PyCharm
+
+from pyecharts.charts import Line
+from pyecharts import options as opts
+from datas import covid_19_data, country_name_map
+
+
+def _line():
+ yaxis_data = [_['value'][0] for _ in covid_19_data]
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data]
+ chart_line = (
+ Line()
+ .add_xaxis(xaxis_data=xaxis_data) # x轴数据,[str,str,str]
+ .add_yaxis(
+ series_name="接种率",
+ y_axis=yaxis_data, # y轴数据[num,num,num]
+ markpoint_opts=opts.MarkPointOpts(
+ data=[ # 标记
+ opts.MarkPointItem(type_="min"), opts.MarkPointItem(type_="max"),
+ opts.MarkPointItem(name="自义标记点定", coord=[xaxis_data[8], yaxis_data[8]])
+ ]
+ ),
+ )
+ .set_global_opts(
+ # title_opts=opts.TitleOpts(title="Line-MarkPoint"), # 标题
+ xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), # 倾斜x轴
+ )
+ )
+
+ return chart_line
+
+
+chartLine = _line()
+chartLine.render("line.html")
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_1.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_1.html"
new file mode 100644
index 0000000000000000000000000000000000000000..c380d732b6d120f10a50004844c05816ac760547
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_1.html"
@@ -0,0 +1,109 @@
+
+
+
+
+ Awesome-pyecharts
+
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_2.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_2.html"
new file mode 100644
index 0000000000000000000000000000000000000000..d0db9a2e2324fd111b719dc661037dc63a25b41e
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquid_2.html"
@@ -0,0 +1,112 @@
+
+
+
+
+ Awesome-pyecharts
+
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquids.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquids.py"
new file mode 100644
index 0000000000000000000000000000000000000000..afb044bf757a3bd6ef8c9a5d5a0afea248f12c04
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/liquids.py"
@@ -0,0 +1,48 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:49
+# software : PyCharm
+
+# 最大最小值
+# 4个球
+
+from pyecharts import options as opts
+from pyecharts.charts import Liquid
+from pyecharts.commons.utils import JsCode
+from datas import covid_19_data, country_name_map
+
+percent_min_data = min([_['value'][0] for _ in covid_19_data])
+percent_max_data = max([_['value'][0] for _ in covid_19_data])
+vaccinated_min_data = min([_['value'][1] for _ in covid_19_data])
+vaccinated_max_data = max([_['value'][1] for _ in covid_19_data])
+
+
+def _liquid():
+ percent_max = (
+ Liquid()
+ .add(
+ series_name="最高比率",
+ data=[round(percent_max_data / 100, 2), 0.3], # 第一个值为显示的值,第二个值为水的分量
+ center=["25%", "25%"],
+ color='white',
+ background_color='lightskyblue',
+ is_outline_show=False, # 显示外边框,默认True
+ label_opts=opts.LabelOpts(color='pink', position="inside")
+ )
+ )
+ percent_min = (
+ Liquid()
+ .add(
+ series_name="最低比率",
+ data=[percent_min_data / 100, 0.3], # 第一个值为显示的值,第二个值为水的分量
+ center=["25%", "25%"],
+ is_outline_show=False
+ )
+ )
+
+ return percent_max, percent_min
+
+
+percent_max_, percent_min_ = _liquid()
+percent_max_.render('liquid_1.html')
+percent_min_.render('liquid_2.html')
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/maps.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/maps.py"
new file mode 100644
index 0000000000000000000000000000000000000000..6c22301991401926d92f32bd763f2f761cc1adb4
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/maps.py"
@@ -0,0 +1,85 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:47
+# software : PyCharm
+
+from pyecharts.charts import Map
+from pyecharts import options as opts
+from pyecharts.commons.utils import JsCode
+from datas import covid_19_data, country_name_map
+
+percent_min_data = min([_['value'][0] for _ in covid_19_data])
+percent_max_data = max([_['value'][0] for _ in covid_19_data])
+vaccinated_min_data = min([_['value'][1] for _ in covid_19_data])
+vaccinated_max_data = max([_['value'][1] for _ in covid_19_data])
+
+
+def _map():
+ data = [[_['name'], [_['value'][0], round(_['value'][1] / 10000, 2), country_name_map[_['name']]]] for _ in
+ covid_19_data]
+ chart_map = (
+ Map()
+ .add(
+ series_name='', # 系列名称,用于tooltip的显示
+ data_pair=data, # 格式为 [['country', value],['country', value]]
+ maptype='world',
+ is_map_symbol_show=False, # 显示图形标记,默认True
+ label_opts=opts.LabelOpts(is_show=False), # 不显示地名
+ itemstyle_opts={ # 图元样式配置项
+ "normal": {
+ # 显示的样式
+ "areaColor": "#CED8F6",
+ "borderColor": "#404a59"
+ },
+ "emphasis": {
+ # 鼠标选中后显示的样式
+ "lable": {"show": Map},
+ "areaColor": "rgba(255,255,255, 0.5)"
+
+ },
+ }
+ )
+ .set_global_opts(
+ # 设置标题
+ title_opts=opts.TitleOpts(
+ title="Covid-19 World vaccinated 2021-04-12",
+ pos_left="center",
+ pos_top="top",
+ title_textstyle_opts=opts.TextStyleOpts(
+ font_size=35,
+ color="rgba(155,155,155,0.9)"
+ )
+ ),
+ # 设置 提示框配置项
+ tooltip_opts=opts.TooltipOpts(
+ # formatter="{b}:{c}{d}", # 格式化 显示在选中时候的样式
+ # is_show=False
+ formatter=JsCode(
+ """
+ function (params){
+ if('value' in params.data){
+ return params.data.value[2] + ' : ' + params.data.value[0] + '% : ' + params.data.value[1]+'万'
+ }
+ }
+ """
+ )
+ ),
+ visualmap_opts=opts.VisualMapOpts(
+ # orient='vertical', # 垂直,可设置 水平 horizontal
+ # is_calculable=True, # 可拖拽
+ dimension=0, # 维度,多层图形时候有用
+ pos_right='right', # 组件位置
+ pos_bottom='bottom', # 组件位置
+ range_text=['max', 'min'], # 组件两端的文本
+ # range_color=["lightskyblue", "yellow", "orangered"], # 组件过渡颜色
+ min_=percent_min_data, # 组件最小值
+ max_=percent_max_data, # 组件最大值
+ )
+ )
+ )
+
+ return chart_map
+
+
+chartMap = _map()
+chartMap.render()
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bar_line.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bar_line.html"
new file mode 100644
index 0000000000000000000000000000000000000000..a1cfca2737f1b34be97ff565064bc7bb6b95da6c
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bar_line.html"
@@ -0,0 +1,351 @@
+
+
+
+
+ Awesome-pyecharts
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bat_line.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bat_line.py"
new file mode 100644
index 0000000000000000000000000000000000000000..05d0469d84ac008e83620d9a9f46356e5ea0f439
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/overlap_bat_line.py"
@@ -0,0 +1,66 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 22:20
+# software : PyCharm
+
+from pyecharts import options as opts
+from pyecharts.charts import Bar, Line
+from pyecharts.faker import Faker
+from datas import covid_19_data_, country_name_map,covid_19_data
+
+percent_min_data = min([_['value'][0] for _ in covid_19_data])
+percent_max_data = max([_['value'][0] for _ in covid_19_data])
+vaccinated_min_data = min([_['value'][1] for _ in covid_19_data])
+vaccinated_max_data = max([_['value'][1] for _ in covid_19_data])
+
+xaxis_data = [country_name_map[_['name']] for _ in covid_19_data_]
+yaxis_one_data = [_['value'][0] for _ in covid_19_data_]
+yaxis_two_data = [round(_['value'][1] / 10000, 2) for _ in covid_19_data_]
+
+
+def _overlap():
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data_]
+ yaxis_one_data = [_['value'][0] for _ in covid_19_data_]
+ yaxis_two_data = [round(_['value'][1] / 10000, 2) for _ in covid_19_data_]
+ chart_overlap = (
+ Bar()
+ .add_xaxis(xaxis_data) # x轴数据格式,同柱状图
+ .add_yaxis(
+ series_name="单位/万",
+ y_axis=yaxis_two_data, # y轴数据格式,同柱状图
+ )
+ .extend_axis(
+ yaxis=opts.AxisOpts(
+ axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=5, # 显示的y轴,间隔为5
+ )
+ )
+ .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不显示柱状图上面的字
+ .set_global_opts(
+ yaxis_opts=opts.AxisOpts(
+ axislabel_opts=opts.LabelOpts(formatter="{value} 万"), # 显示的y轴
+ ),
+ xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), # 倾斜x轴
+ )
+ )
+ #
+ line = (
+ Line()
+ .add_xaxis(xaxis_data=xaxis_data) # x轴数据格式,同柱状图
+ .add_yaxis(
+ series_name="单位 %",
+ y_axis=yaxis_one_data, # y轴数据格式,同柱状图
+ yaxis_index=1,
+ markpoint_opts=opts.MarkPointOpts(
+ data=[ # 标记
+ opts.MarkPointItem(type_="min"), opts.MarkPointItem(type_="max"),
+ opts.MarkPointItem(name="自定义", coord=[xaxis_data[0], yaxis_one_data[0]], value=yaxis_one_data[0])
+ ]
+ )
+ )
+ )
+ chart_overlap.overlap(line)
+ return chart_overlap
+
+
+chartOverlap = _overlap()
+chartOverlap.render("overlap_bar_line.html")
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pages.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pages.py"
new file mode 100644
index 0000000000000000000000000000000000000000..b55ccc8bba79adfeb86037585ad35c63db036059
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pages.py"
@@ -0,0 +1,250 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:49
+# software : PyCharm
+
+from pyecharts import options as opts
+from pyecharts.commons.utils import JsCode
+from pyecharts.charts import Pie, Bar, Map, Line, Liquid, Page
+#
+from datas import covid_19_data, covid_19_data_, country_name_map
+
+percent_min_data = min([_['value'][0] for _ in covid_19_data])
+percent_max_data = max([_['value'][0] for _ in covid_19_data])
+vaccinated_min_data = min([_['value'][1] for _ in covid_19_data])
+vaccinated_max_data = max([_['value'][1] for _ in covid_19_data])
+
+
+def _line():
+ yaxis_data = [_['value'][0] for _ in covid_19_data]
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data]
+ chart_line = (
+ Line()
+ .add_xaxis(xaxis_data=xaxis_data) # x轴数据,[str,str,str]
+ .add_yaxis(
+ series_name="接种率", y_axis=yaxis_data, # y轴数据[num,num,num]
+ markpoint_opts=opts.MarkPointOpts(
+ data=[ # 标记
+ opts.MarkPointItem(type_="min"), opts.MarkPointItem(type_="max"),
+ opts.MarkPointItem(name="自义标记点定", coord=[xaxis_data[8], yaxis_data[8]])
+ ]
+ ),
+ )
+ .set_global_opts(
+ title_opts=opts.TitleOpts(title="Line-MarkPoint"), # 标题
+ xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), # 倾斜x轴
+ )
+ )
+
+ return chart_line
+
+
+def _bar():
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data][::-1]
+ yaxis_data = [round(_['value'][1] / 10000, 2) for _ in covid_19_data][::-1]
+ chart_bar = (
+ Bar().add_xaxis(xaxis_data) # 传入x轴的数据, 格式为[1,2,3,4,5]
+ .add_yaxis(
+ series_name="", # 系列名称
+ y_axis=yaxis_data, # y轴的数据,[num,num,num]
+ label_opts=opts.LabelOpts( # 标签配置
+ position='right', # 标签显示的位置,inside,left,top,bottom
+ formatter="{b}: {c}万" # 标签显示的格式
+ )
+ )
+ .reversal_axis() # x轴y轴倒置
+ .set_global_opts(
+ yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(is_show=False)), # 不显示坐标轴的标签
+ tooltip_opts=opts.TooltipOpts(is_show=False), # 关闭提示,鼠标移动过去不显示
+ visualmap_opts=opts.VisualMapOpts(
+ dimension=0,
+ range_text=['max', 'min'], # 组件两端的文本
+ # is_calculable=True, # 显示组件拖拽手柄
+ # range_color=["lightskyblue", "red", "pink"], # 组件过渡颜色
+ # textstyle_opts=opts.TextStyleOpts(
+ # color="rgba(0,0,0,0.5)" # 文字颜色
+ # ),
+ min_=round(vaccinated_min_data / 10000, 2), # 组件最小值
+ max_=round(vaccinated_max_data / 10000, 2), # 组件最大值
+ )
+ )
+ )
+ return chart_bar
+
+
+def _map():
+ data = [[_['name'], [_['value'][0], round(_['value'][1] / 10000, 2), country_name_map[_['name']]]] for _ in
+ covid_19_data]
+ chart_map = (
+ Map()
+ .add(
+ series_name='', # 系列名称,用于tooltip的显示
+ data_pair=data, # 格式为 [['country', value],['country', value]]
+ maptype='world',
+ is_map_symbol_show=False, # 显示图形标记,默认True
+ label_opts=opts.LabelOpts(is_show=False), # 不显示地名
+ itemstyle_opts={ # 图元样式配置项
+ "normal": {
+ # 显示的样式
+ "areaColor": "#CED8F6",
+ "borderColor": "#404a59"
+ },
+ "emphasis": {
+ # 鼠标选中后显示的样式
+ "lable": {"show": Map},
+ "areaColor": "rgba(255,255,255, 0.5)"
+
+ },
+ }
+ )
+ .set_global_opts(
+ # 设置标题
+ title_opts=opts.TitleOpts(
+ title="Covid-19 World vaccinated 2021-04-12",
+ pos_left="center",
+ pos_top="top",
+ title_textstyle_opts=opts.TextStyleOpts(
+ font_size=35,
+ color="rgba(155,155,155,0.9)"
+ )
+ ),
+ # 设置 提示框配置项
+ tooltip_opts=opts.TooltipOpts(
+ # formatter="{b}:{c}{d}", # 格式化 显示在选中时候的样式
+ # is_show=False
+ formatter=JsCode(
+ """
+ function (params){
+ if('value' in params.data){
+ return params.data.value[2] + ' : ' + params.data.value[0] + '% : ' + params.data.value[1]+'万'
+ }
+ }
+ """
+ )
+ ),
+ visualmap_opts=opts.VisualMapOpts(
+ # orient='vertical', # 垂直,可设置 水平 horizontal
+ # is_calculable=True, # 可拖拽
+ dimension=0, # 维度,多层图形时候有用
+ pos_right='right', # 组件位置
+ pos_bottom='bottom', # 组件位置
+ range_text=['max', 'min'], # 组件两端的文本
+ # range_color=["lightskyblue", "yellow", "orangered"], # 组件过渡颜色
+ min_=percent_min_data, # 组件最小值
+ max_=percent_max_data, # 组件最大值
+ )
+ )
+ )
+
+ return chart_map
+
+
+def _liquid():
+ percent_max = (
+ Liquid()
+ .add(
+ series_name="最高比率",
+ data=[round(percent_max_data / 100, 2), 0.3], # 第一个值为显示的值,第二个值为水的分量
+ center=["25%", "25%"],
+ color='white',
+ background_color='lightskyblue',
+ is_outline_show=False, # 显示外边框,默认True
+ label_opts=opts.LabelOpts(color='pink', position="inside")
+ )
+ )
+ percent_min = (
+ Liquid()
+ .add(
+ series_name="最低比率",
+ data=[percent_min_data / 100, 0.3], # 第一个值为显示的值,第二个值为水的分量
+ center=["25%", "25%"],
+ is_outline_show=False
+ )
+ )
+
+ return percent_max, percent_min
+
+
+def _pie():
+ data = [(country_name_map[_['name']], _['value'][0]) for _ in covid_19_data]
+ chart_pie = (
+ Pie()
+ .add(
+ series_name="",
+ data_pair=data, # 格式为 [(key1, value1), (key2, value2)]
+ radius=["30%", "75%"], # 饼图的半径,第一项内半径,第二项外半径
+ center=["25%", "50%"], # 饼图的坐标,第一项内横坐标,第二项纵坐标
+ rosetype="radius", # 扇区圆心角展现数据的百分比,半径展现数据的大小
+ label_opts=opts.LabelOpts(is_show=False),
+ )
+ .set_global_opts(
+ # title_opts=opts.TitleOpts(title="Vaccinated Rose"),
+ legend_opts=opts.LegendOpts(is_show=False)
+ )
+ )
+ return chart_pie
+
+
+def _overlap():
+ xaxis_data = [country_name_map[_['name']] for _ in covid_19_data_]
+ yaxis_one_data = [_['value'][0] for _ in covid_19_data_]
+ yaxis_two_data = [round(_['value'][1] / 10000, 2) for _ in covid_19_data_]
+ chart_overlap = (
+ Bar()
+ .add_xaxis(xaxis_data) # x轴数据格式,同柱状图
+ .add_yaxis(
+ series_name="单位/万",
+ y_axis=yaxis_two_data, # y轴数据格式,同柱状图
+ )
+ .extend_axis(
+ yaxis=opts.AxisOpts(
+ axislabel_opts=opts.LabelOpts(formatter="{value} %"), interval=5, # 显示的y轴,间隔为5
+ )
+ )
+ .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 不显示柱状图上面的图
+ .set_global_opts(
+ yaxis_opts=opts.AxisOpts(
+ axislabel_opts=opts.LabelOpts(formatter="{value} 万"), # 显示的y轴
+ ),
+ xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), # 倾斜x轴
+ )
+ )
+ #
+ line = (
+ Line()
+ .add_xaxis(xaxis_data=xaxis_data) # x轴数据格式,同柱状图
+ .add_yaxis(
+ series_name="单位 %",
+ y_axis=yaxis_one_data, # y轴数据格式,同柱状图
+ yaxis_index=1,
+ markpoint_opts=opts.MarkPointOpts(
+ data=[ # 标记
+ opts.MarkPointItem(type_="min"), opts.MarkPointItem(type_="max"),
+ opts.MarkPointItem(name="自定义", coord=[xaxis_data[0], yaxis_one_data[0]], value=yaxis_one_data[0])
+ ]
+ )
+ )
+ )
+ chart_overlap.overlap(line)
+ return chart_overlap
+
+
+def first_run():
+ chartBar = _bar()
+ chartMap = _map()
+ chartLiquid_1, chartLiquid_2 = _liquid()
+ chartPie = _pie()
+ chartOverlap = _overlap()
+ #
+ page = Page(page_title="Covid-19 World vaccinated", layout=Page.DraggablePageLayout)
+ page.add(chartBar, chartMap, chartLiquid_1, chartLiquid_2, chartPie, chartOverlap)
+ page.render('render.html')
+
+
+def second_run():
+ Page.save_resize_html(source='render.html', cfg_file="./chart_config.json", dest="result_.html")
+
+
+if __name__ == '__main__':
+ # first_run()
+ second_run()
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pies.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pies.py"
new file mode 100644
index 0000000000000000000000000000000000000000..d937832f1160fd6e7fcba241b50ae235a465a7c4
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/pies.py"
@@ -0,0 +1,33 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 14:48
+# software : PyCharm
+
+
+from pyecharts.charts import Pie
+from pyecharts import options as opts
+from datas import covid_19_data, country_name_map
+
+
+def _pie():
+ data = [(country_name_map[_['name']], _['value'][0]) for _ in covid_19_data]
+ chart_pie = (
+ Pie()
+ .add(
+ series_name="",
+ data_pair=data, # 格式为 [(key1, value1), (key2, value2)]
+ radius=["30%", "75%"], # 饼图的半径,第一项内半径,第二项外半径
+ center=["25%", "50%"], # 饼图的坐标,第一项内横坐标,第二项纵坐标
+ rosetype="radius", # 扇区圆心角展现数据的百分比,半径展现数据的大小
+ label_opts=opts.LabelOpts(is_show=False),
+ )
+ .set_global_opts(
+ # title_opts=opts.TitleOpts(title="Vaccinated Rose"),
+ legend_opts=opts.LegendOpts(is_show=False)
+ )
+ )
+ return chart_pie
+
+
+chartPie = _pie()
+chartPie.render()
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/render.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/render.html"
new file mode 100644
index 0000000000000000000000000000000000000000..361573791b6b25506dfa417b0d905a86cf479bcc
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/render.html"
@@ -0,0 +1,1260 @@
+
+
+
+
+ Covid-19 World vaccinated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result.html"
new file mode 100644
index 0000000000000000000000000000000000000000..41af443ca60de4a887a8652ac8fbd7789b67ee3e
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result.html"
@@ -0,0 +1,1264 @@
+
+
+
+
+ Covid-19 World vaccinated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result_.html" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result_.html"
new file mode 100644
index 0000000000000000000000000000000000000000..bac822fa69106c77297787d1feb47aa6dc63229c
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/result_.html"
@@ -0,0 +1,1260 @@
+
+
+
+
+ Covid-19 World vaccinated
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/standard_data.py" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/standard_data.py"
new file mode 100644
index 0000000000000000000000000000000000000000..cf15d2da4b699abe36da5afcad5c56f0a0b145e2
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\344\273\243\347\240\201/standard_data.py"
@@ -0,0 +1,27 @@
+# -*- coding:utf-8 -*-
+# author : SunriseCai
+# datetime : 2021-04-11 13:38
+# software : PyCharm
+
+import pandas as pd
+
+# read excel data
+df = pd.read_excel("covid-19_vaccinated.xlsx", engine="openpyxl")
+
+# get min and max value
+percent_min = df.describe()['Percent'].min()
+percent_max = df.describe()['Percent'].max()
+#
+fully_vaccinated_min = df.describe()['Fully vaccinated'].min()
+fully_vaccinated_max = df.describe()['Fully vaccinated'].max()
+#
+# standard data
+data_list = list()
+for index, data in df.iterrows():
+ country = data['country']
+ en_country = data['en_country']
+ percent = data['Percent']
+ fully_vaccinated = data['Fully vaccinated']
+ print(country, en_country, percent, fully_vaccinated)
+ data_list.append({'name': en_country, 'value': [percent, fully_vaccinated, en_country]})
+print(data_list)
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\210\252\345\233\276/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\210\252\345\233\276/.keep"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\210\252\345\233\276/\345\205\250\347\220\203\346\216\245\347\247\215\346\226\260\345\206\240\347\226\253\350\213\227\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217\346\210\252\345\233\276" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\210\252\345\233\276/\345\205\250\347\220\203\346\216\245\347\247\215\346\226\260\345\206\240\347\226\253\350\213\227\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217\346\210\252\345\233\276"
new file mode 100644
index 0000000000000000000000000000000000000000..f2e8b44212bf6cbe840f28b6e9a82585b1511b30
Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\210\252\345\233\276/\345\205\250\347\220\203\346\216\245\347\247\215\346\226\260\345\206\240\347\226\253\350\213\227\345\217\257\350\247\206\345\214\226\345\244\247\345\261\217\346\210\252\345\233\276" differ
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\225\260\346\215\256/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\225\260\346\215\256/.keep"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\225\260\346\215\256/covid-19_vaccinated.xlsx" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\225\260\346\215\256/covid-19_vaccinated.xlsx"
new file mode 100644
index 0000000000000000000000000000000000000000..a252b988b21c9ee8f4aa840b3e4d0e0da7ac45ca
Binary files /dev/null and "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\346\225\260\346\215\256/covid-19_vaccinated.xlsx" differ
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/.keep" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/.keep"
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/detailed documentation.md" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/detailed documentation.md"
new file mode 100644
index 0000000000000000000000000000000000000000..c947c9a6ce4d6b0313a22b643206313e62630328
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/detailed documentation.md"
@@ -0,0 +1,24 @@
+一、任务要求
+ 1、寻找相关数据。
+ 2、对数据进行处理。
+ 3、将处理过的数据通过dataease展示出来,实现数据可视化。
+
+
+二、详细设计
+ 1、数据来源:
+
+ 其它国家数据:https://news.google.com/covid19/map?hl=en-US&gl=US&ceid=US%3Aen&state=7
+
+ 中国(国家卫生健康委员会):http://www.nhc.gov.cn/xcs/yqjzqk/202104/f2bd77de994d4a798645a2316584f870.shtml
+
+ 2、数据提取
+
+ 选取了乌克兰、冰岛、直布罗陀、日本、法国、智利、德国、以色列、俄罗斯、巴西、英国、土耳其、印度、美国和中国这十五个国家,得到相关国家疫苗接种人数的数据。
+
+ 3、数据可视化
+
+ 定义设计风格,对页面进行相关布局,确认数据的维度,将数据在dataease中通过柱状图、折线图、饼图、地图等方式进行可视化,对样图进行沟通确认,最后进行整体细节调优与测试。
+
+
+三、功能分析
+ 可以看到各个国家接种疫苗的人数,可以通过接种疫苗的人数和死亡人数进行对比判断疫苗是否有效,可以更好的规划国家接种疫苗的安排,通过大多数人的接种,达到全民免疫的效果,从而切断新冠病毒的传播链。
\ No newline at end of file
diff --git "a/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/specification.md" "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/specification.md"
new file mode 100644
index 0000000000000000000000000000000000000000..b34dcca464366284e59713c9418d91ecdaf50bea
--- /dev/null
+++ "b/03-\350\257\276\347\250\213\345\256\236\351\252\214/CS2101009/\351\241\271\347\233\256\350\257\264\346\230\216/specification.md"
@@ -0,0 +1,3 @@
+#项目说明
+
+针对全球国家接种新冠疫苗的情况,选取十多个国家(包括中国在内),对截至2021年4月相关国家接种新冠疫苗的情况进行可视化,在dataease中展示出来。
\ No newline at end of file