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