数据可视化—动态GDP柱状图绘制
动态GDP柱状图绘制列表的sort方法对列表元素基于函数进行自定义排序使用方式列表.sort(key选择排序依据的函数, reverseTrue|False)参数key要求传入一个函数表示将列表的每一个元素都传入函数中返回排序的依据匿名lambda函数形式# 准备列表my_list[[a,33],[b,45],[c,78]]# 排序1基于带名函数defchoose_sort_key(element):returnelement[1]# element[1]是数字my_list.sort(keychoose_sort_key,reverseTrue)# 基于key后的这个函数排序从大到小# 排序2基于lambda匿名函数my_list.sort(keylambdaelement:element[1],reverseTrue)print(my_list)动态GDP柱状图绘制案例演示frompyecharts.chartsimportBar,Timelinefrompyecharts.optionsimport*frompyecharts.globalsimportThemeType# 读取数据fopen(E:/1960-2019全球GDP数据.csv,r,encodingGB2312)data_linesf.readlines()# 关闭文件f.close()# 删除第一条数据data_lines.pop(0)# 将数据转换为字典存储格式为# {年份[[国家,gdp],[国家gdp],[国家gdp],.......],年份[[国家,gdp],[国家gdp],[国家gdp],.......],.....}# {1960[[中国,200],[美国100],[英国88],.......],1961[[中国,300],[美国200],[英国168],.......],.....}# 先定义一个字典对象data_dict{}forlineindata_lines:yearint(line.split(,)[0])# 年份countryline.split(,)[1]# 国家gdpfloat(line.split(,)[2])# gdp数值float将科学计数法显示的数转为数字# 如何判断字典里面有没有指定的key值呢try:data_dict[year].append([country,gdp])exceptKeyError:data_dict[year][]data_dict[year].append([country,gdp])# print(data_dict)# 创建时间线对象timelineTimeline({theme:ThemeType.LIGHT})# 排序年份sorted_year_listsorted(data_dict.keys())# 只要前8所以对列表进行排序foryearinsorted_year_list:# 通过这个lambda element: element[1]对列表中的指定数据进行排序data_dict[year].sort(keylambdaelement:element[1],reverseTrue)year_datadata_dict[year][0:8]x_data[]y_data[]forcountry_gdpinyear_data:x_data.append(country_gdp[0])# x轴添加国家y_data.append(country_gdp[1]/100000000)# y轴添加gdp数据# 构建柱状图barBar()x_data.reverse()y_data.reverse()bar.add_xaxis(x_data)bar.add_yaxis(GDP(亿),y_data,label_optsLabelOpts(positionright))# 反转x轴y轴bar.reversal_axis()# 设置每一年图表的标题bar.set_global_opts(title_optsTitleOpts(titlef{year}年全球前8名GDP数据))timeline.add(bar,str(year))# for循环每一年的数据基于每一年的数据创建每一年的bar对象# 在for中将每一年的bar对象添加到时间线中# 设置时间线自动播放timeline.add_schema(play_interval1000,#自动播放的时间间隔单位毫秒一秒一变is_timeline_showTrue,#是否在自动播放的时候显示时间线is_auto_playTrue,#是否自动播放is_loop_playFalse#是否循环自动播放)# 绘图timeline.render()